加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用Hibernate在PostgreSQL中进行JSON密钥搜索

发布时间:2020-12-15 01:03:37 所属栏目:Java 来源:网络整理
导读:我有一个包含以下数据的JSON字段数据 {"name":"xx"} 我想使用Hibernate在这个字段上执行全文搜索.有什么办法可以实现吗?我按照一些例子,但对我没什么用. 最佳答案 理想情况下,Hibernate将通过JPQL / HQL和/或Criteria查询对JSON对象内部进行查询.目前情况似

我有一个包含以下数据的JSON字段数据 –

{"name":"xx"}

我想使用Hibernate在这个字段上执行全文搜索.有什么办法可以实现吗?我按照一些例子,但对我没什么用.

最佳答案
理想情况下,Hibernate将通过JPQL / HQL和/或Criteria查询对JSON对象内部进行查询.目前情况似乎并非如此(5.0.1).

看起来您现在需要使用以下方法之一来使用本机查询:

> Use EntityManager.createNativeQuery或其中一个变种;
>在映射中定义@NamedNativeQuery,然后使用EntityManager.createNamedQuery运行它;要么
>打开EntityManager,打开下面的Session,然后使用JDBC

如果您使用的是本机Hibernate接口而不是JPA接口,则Hibernate等同于映射中的所有上述命名本机查询,通过Session对象创建本机查询,或者解开Session以获取java.sql.Connection.

在所有这些情况下,您需要使用PostgreSQL特定的运算符吗?和 – >>查询json和常规SQL,而不是JPQL / HQL.请参阅postgresql json operators.请注意,JSON功能在9.3中引入并在9.4和9.5中得到增强,因此请检查您的版本是否具有所需的功能.

例如,你可以使用myjsoncolumn吗? jsonb在9.4中的’key’.对于普通的json类型,您需要使用(myjsoncolumn – >’key’)IS NULL.使用 – >非常重要不 – >>因为 – >为像{“a”:null}这样的对象返回一个json null对象,另一个返回NULL,所以你不能区分{“a”:null}和{}之间的区别.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读