JPA 支持查询 Postgres JSON 字段

2024-05-20

JPA 是否已经支持处理 JSON 字段的查询,如下所示:

select * from person where (info ->> 'age')::numeric = 40;

select * from person where info ->> 'firstName'= 'Cabalo';

我正在使用 hibernate 5 (在 spring-data-jpa 后面)和 Postgres 9.4


JPA 本身不支持转换 JSON 或 JSONB 字段。您将需要创建一个javax.persistence.AttributeConverter为了往返 JSON/JSONB。另一个需要记住的重要课程是org.postgresql.util.PGobject , which is useful for converting to/fromjsonb` 字段。

其次,JPA只是一个API。您将需要自定义底层实现才能充分利用此类型。您将需要创建org.hibernate.dialect.function.SQLFunction为了使用 JSON/JSONB 函数。您需要将其与您创建的一起注册AttributeConverter输入org.hibernate.dialect.PostgreSQL95Dialect.

另请注意:在创建时引用您用作本机函数调用或别名的 json/jsonb 运算符可能会有所帮助SQLFunction。本机查询倾向于包含?即使正确转义,操作符也会被破坏。

See Hibernate Java文档 https://docs.jboss.org/hibernate/orm/5.2/javadocs/ and JPA Java文档 https://jakarta.ee/specifications/persistence/2.2/apidocs/javax/persistence/AttributeConverter.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA 支持查询 Postgres JSON 字段 的相关文章

随机推荐