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

前端之家收集整理的这篇文章主要介绍了java – 使用Hibernate在PostgreSQL中进行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}和{}之间的区别.

猜你在找的Java相关文章