[英]JSON key search in PostgreSQL using Hibernate
我有一个JSON字段data
包含以下数据-
{"name":"xx"}
我想使用Hibernate在这个字段上执行全文搜索。 有什么办法可以实现吗? 我按照一些例子,但对我没什么用。
理想情况下,Hibernate将通过JPQL / HQL和/或Criteria查询对JSON对象内部进行查询。 目前情况似乎并非如此(5.0.1)。
看起来您现在需要使用以下方法之一来使用本机查询:
在映射中定义@NamedNativeQuery
然后使用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中得到增强,因此请检查您的版本是否具有所需的功能。
例如,你可以使用myjsoncolumn ? 'key'
jsonb
在9.4+中的myjsoncolumn ? 'key'
。 对于普通的json
类型,您需要使用(myjsoncolumn -> 'key') IS NULL
。 使用->
not ->>
很重要因为->
为{"a":null}
这样的对象返回一个json null对象,另一个返回NULL
,所以你不能区分{"a":null}
和{}
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.