gpt4 book ai didi

json - Postgres JSON 类型的 JPA2/Hibernate Criteria 或 CriteriaQuery

转载 作者:行者123 更新时间:2023-11-29 11:18:05 25 4
gpt4 key购买 nike

我有一个带有 JSON 字段的 PostgreSQL 数据库。我想构建一个通过 JSON 表达式限制结果的查询。我可以毫无问题地在 psql 中制定此查询:

select * from mytable where relation_id=100 AND CAST(jsonField->'key' AS float) >= 10.0;

此查询结合了普通列和 JSON 列。

我不知道如何使用 Criteria 或 Criteria 查询在 Hibernate 中启动它。理论上,我可以使用 HSQL 语言,但我几乎可以肯定,当涉及到 JSON 列时,它会失败。

有人知道如何解决这个问题吗?

最佳答案

唯一的方法是为 CAST(jsonField->'key' AS float) 表达式编写自定义 SQLFunction,然后在 JPQL 中使用它。

public String render(Type firstArgumentType, List args, SessionFactoryImplementor factory) throws QueryException {
return "CAST(" + args.get(0).toString() + "->'" + args.get(1).toString() + "' AS float)";
}

使用 registerFunction("json_float", new JsonFloatFunction()) 在方言中注册并在查询中使用它

SELECT o FROM MyTable o WHERE o.relation.id = 100 AND JSON_FLOAT(o.jsonField, 'key') >= 10.0

关于json - Postgres JSON 类型的 JPA2/Hibernate Criteria 或 CriteriaQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com