JSON 使用 Hibernate 在 PostgreSQL 中搜索关键字

JSON key search in PostgreSQL using Hibernate

我有一个 JSON 字段 data 包含以下数据-

{"name":"xx"}

我想使用 Hibernate 对此字段执行全文搜索。有什么办法可以做到这一点?我遵循了一些示例,但对我没有任何帮助。

理想情况下,Hibernate 会原生支持通过 JPQL/HQL and/or 条件查询在 JSON 对象内部进行查询。目前 (5.0.1) 似乎并非如此。

目前您似乎需要通过以下方法之一使用本机查询:

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

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

例如,您可以在 9.4+ 中使用 myjsoncolumn ? 'key'jsonb。对于普通 json 类型,您需要使用 (myjsoncolumn -> 'key') IS NULL。使用 -> 而不是 ->> 很重要,因为 -> returns 对于像 {"a":null} 这样的对象,一个 json 空对象,另一个 returns NULL,所以你分不清{"a":null}{}