我正在尝试使用JPA 2
为以下场景提供的CriteriaQuery
编写Select
语句:
- 对项目进行分组,如果至少一列为"true",则返回 true
- 对项目进行分组,如果所有列都为"true",则返回 true
我注意到PostGreSQl
中有bool_and
和bool_or functions
.这是解释这些功能的链接。 布尔聚合函数 如何使用JPA CriteriaQuery/CriteriaBuilder?
实现此功能
您可以使用以下命令调用任何本机 SQL 函数
CriteriaBuilder.function('bool_and', Boolean.class, args)
其中"args"是函数采用的参数,第二个参数是返回类型(参见javadocs)。显然,你会失去数据库独立性,但这样你可能就不关心这些事情了。
JPA 不支持自定义函数。它可以通过休眠(看这里)或本机查询来实现。两者都需要对代码进行重大更改。