2 回答
TA贡献1765条经验 获得超5个赞
从JPA 2.1 规范最终版本:
Java 持久化查询语言的 BNF 语法:
aggregate_expression ::=
{AVG | MAX | MIN | SUM} ([DISTINCT] state_field_path_expression) |
COUNT ([DISTINCT] identification_variable | state_field_path_expression |
single_valued_association_path_expression) |
function_invocation
因此,UPPER()在这种情况下,您不能像这样使用JPQL.
您可以将工作sql查询与休眠本机查询一起使用,例如:
public long getCount() {
String sql = "SELECT COUNT(DISTINCT UPPER(l.city))"
+ " FROM location_table_name l WHERE l.active = true";
return ((BigInteger) em.createNativeQuery(sql)
.getSingleResult())
.longValue();
}
笔记:
如果您不区分大小写collation,以下JPQL应该简单地工作:
SELECT COUNT(DISTINCT l.city) FROM Location l WHERE l.active = true
添加回答
举报