如何在 jpa nativequery 中执行 postgresql json 函数查询?
How to execute a postgresql json function query in jpa nativequery?
这里我试图从我的 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);
但是报错:
错误 26044 --- [nio-8091-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper:在此结果集中找不到列名 case_id。
即使此列存在于 table.I 尝试使用简单查询,但它也给出错误。
@Query("Select caseData->'business' from OnboardingCases where caseId=?1")
List<OnboardingCases> findByCaseAttrib(BigInteger caseId);
它在 >
处给出 error:Unexpected 个令牌
上述查询在 pgAdmin4 上运行完美,但在 jpa 上运行不佳。
终于做到了。回答以帮助任何寻求答案的人。将 return 类型更改为 List<String>
。
@Query(value = "Select case_data->'business' from onboarding.onboarding_cases where case_id=?1", nativeQuery = true)
List<String> findByCaseAttrib(BigInteger case_id);
必须添加一个特殊的依赖项,以便 jsonb 数据类型可以映射到 hibernate。因为hibernate默认没有这样的数据类型。
<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-52</artifactId>
<version>2.5.0</version>
</dependency>
特别感谢 vladmihalcea 编写了一个用于在休眠中映射 jsonb 数据类型的 jar。
有关更多数据,请参阅 here。
这里我试图从我的 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);
但是报错: 错误 26044 --- [nio-8091-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper:在此结果集中找不到列名 case_id。
即使此列存在于 table.I 尝试使用简单查询,但它也给出错误。
@Query("Select caseData->'business' from OnboardingCases where caseId=?1")
List<OnboardingCases> findByCaseAttrib(BigInteger caseId);
它在 >
处给出 error:Unexpected 个令牌上述查询在 pgAdmin4 上运行完美,但在 jpa 上运行不佳。
终于做到了。回答以帮助任何寻求答案的人。将 return 类型更改为 List<String>
。
@Query(value = "Select case_data->'business' from onboarding.onboarding_cases where case_id=?1", nativeQuery = true)
List<String> findByCaseAttrib(BigInteger case_id);
必须添加一个特殊的依赖项,以便 jsonb 数据类型可以映射到 hibernate。因为hibernate默认没有这样的数据类型。
<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-52</artifactId>
<version>2.5.0</version>
</dependency>
特别感谢 vladmihalcea 编写了一个用于在休眠中映射 jsonb 数据类型的 jar。 有关更多数据,请参阅 here。