【问题标题】:How to represent Postgresql bool_and and bool_or aggregate functions in JPA 2 using CriteriaQuery?如何使用 CriteriaQuery 在 JPA 2 中表示 Postgresql bool_and 和 bool_or 聚合函数?
【发布时间】:2018-07-10 00:24:45
【问题描述】:
我正在尝试使用JPA 2 为以下场景提供CriteriaQuery 编写Select 语句:
- 分组项目,如果至少一列是“真”,则返回真
- 分组项目,如果所有列都为“真”,则返回真
我注意到PostGreSQl 中有bool_and 和bool_or functions。这是解释这些功能的链接。
boolean aggregate functions
如何使用JPA CriteriaQuery/CriteriaBuilder? 实现此功能
【问题讨论】:
标签:
hibernate
jpa
criteria-api
criteriaquery
【解决方案1】:
JPA 不支持自定义函数。它可以通过休眠 (look here) 或本机查询来实现。两者都需要对您的代码进行重大更改。
【解决方案2】:
您可以使用
调用任何本机 SQL 函数
CriteriaBuilder.function('bool_and', Boolean.class, args)
其中“args”是您的函数采用的参数,第二个参数是返回类型(参见javadocs)。显然你会失去数据库独立性,但你可能不关心这些事情。