Jus*_*tin 5 java postgresql full-text-search hibernate
我有一个JSON字段data
,其中包含以下数据-
{"name":"xx"}
Run Code Online (Sandbox Code Playgroud)
我想使用Hibernate在此字段上执行全文搜索。有什么办法可以实现?我遵循了一些示例,但没有任何帮助。
理想情况下,Hibernate 将原生支持通过 JPQL/HQL 和/或 Criteria 查询在 JSON 对象内进行查询。目前看来情况并非如此(5.0.1)。
目前看来您需要使用以下方法之一来使用本机查询:
@NamedNativeQuery
在您的映射中定义 a ,然后使用EntityManager.createNamedQuery
它来运行它;或者
打开EntityManager
,打开Session
下面的包装,然后使用 JDBC
如果您使用本机 Hibernate 接口而不是 JPA 接口,则 Hibernate 等效于所有上述内容 - 映射中命名的本机查询、通过对象创建本机查询Session
,或解包Session
以获取java.sql.Connection
.
在所有这些情况下,您都需要使用 PostgreSQL 特定的运算符,例如?
和->>
来查询 json 和常规 SQL,而不是 JPQL/HQL。请参阅postgresql json 运算符。请注意,JSON 功能是在 9.3 中引入的,并在 9.4 和 9.5 中得到增强,因此请检查您的版本是否具有您需要的功能。
例如,您可以在 9.4+ 中使用myjsoncolumn ? 'key'
with 。jsonb
对于普通json
类型,您需要使用(myjsoncolumn -> 'key') IS NULL
. 使用->
not很重要->>
,因为->
对于像 之类的对象返回一个 json null 对象{"a":null}
,另一个返回NULL
,所以你无法区分{"a":null}
和 之间的区别{}
。
归档时间: |
|
查看次数: |
2352 次 |
最近记录: |