【发布时间】:2020-01-29 10:21:10
【问题描述】:
这里我试图从我的 jsonb 列 case_data 中获取一个名为 business 的对象,其中 case_id 是通过参数设置的。
@Query(value="Select case_data->'business' from onboarding_cases where case_id=?1",nativeQuery=true)
List<OnboardingCases> findByCaseAttrib(BigInteger caseId);
但它给出了错误: ERROR 26044 --- [nio-8091-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : 在这个 ResultSet 中找不到列名 case_id。
即使该列存在于表中。我尝试使用简单查询,但它也给出了错误。
@Query("Select caseData->'business' from OnboardingCases where caseId=?1")
List<OnboardingCases> findByCaseAttrib(BigInteger caseId);
它给出错误:在 >
处出现意外的令牌上述查询在 pgAdmin4 上完美运行,但在 jpa 中却没有。
【问题讨论】:
-
它运行。不起作用的是将结果集转换为 List
,因为您的查询不会返回构成 OnboardingCases 的所有列。它只返回存储在表的一列中的 JSON 文档的一个字段。你不能只用一个轮子造一辆整车。 -
我应该将返回类型更改为什么? JSONObject??
-
我不知道你的 JSON 是什么样子的。但即使我知道,我也从未在 PostgreSQL 中使用过 JSON 支持,所以我不知道。
-
我不认为这是一个返回类型错误。因为它说 case_id 列名不存在。我尝试了许多返回类型但它给出了 1111 错误。
-
它不存在 在您的查询返回的结果集中,因为您没有选择任何以这种方式命名的列。
标签: java json postgresql jpa nativequery