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 次 |
| 最近记录: |