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}和{}之间的区别.

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...