Ion*_*chy 9 postgresql json hibernate jpa-2.0
我有一个带有JSON字段的PostgreSQL数据库.我想构建一个通过JSON表达式限制结果的查询.我可以在psql中制定这个查询而不会出现问题:
select * from mytable where relation_id=100 AND CAST(jsonField->'key' AS float) >= 10.0;
Run Code Online (Sandbox Code Playgroud)
此查询组合了普通列和JSON列.
我不知道如何使用Criteria或Criteria查询在Hibernate中启动它.理论上,我可以使用HSQL语言,但我几乎可以肯定,当涉及到JSON列时,它会失败.
有谁知道如何解决这个问题?
唯一的方法是为表达式编写自定义内容SQLFunction,CAST(jsonField->'key' AS float)然后在 JPQL 中使用它。
public String render(Type firstArgumentType, List args, SessionFactoryImplementor factory) throws QueryException {
return "CAST(" + args.get(0).toString() + "->'" + args.get(1).toString() + "' AS float)";
}
Run Code Online (Sandbox Code Playgroud)
在方言中注册并registerFunction("json_float", new JsonFloatFunction())在查询中使用它,例如
SELECT o FROM MyTable o WHERE o.relation.id = 100 AND JSON_FLOAT(o.jsonField, 'key') >= 10.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |