我有一张类似的表:
id | value | name
------+---------+--------
1 | a | name1
2 | b | name2
3 | a | name3
4 | a | name4
5 | c | name5
6 | b | name6
7 | c | name7
8 | b | name8
我想要的是:
id | value | names
------+---------+---------------------------
1 | a | name1 , name3, name4
2 | b | name2 , name6, name8
3 | c | name5 , name7
实际上我想获取每个组中的所有记录并迭代这些记录。 我试过这段代码,但它不起作用:
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
Root<T> c = cq.from(entityClass);
cq.select(c);
cq.groupBy(c.get("value"));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return q.getResultList();
感谢。
答案 0 :(得分:0)
即使使用SQL Standard,也无法进行AFAIK查询。
可以使用依赖于数据库供应商的聚合功能。
由于SQL标准无法确定使用JPQL是不可能的。
以下是JPQL支持的聚合函数:http://docs.oracle.com/cd/E11035_01/kodo41/full/html/ejb3_langref.html#ejb3_langref_aggregates
我很确定您必须自己进行转换或使用您需要的数据创建视图,然后查询视图
PS。您呈现的代码暗示您不理解JPA将生成什么查询。我建议你尝试在MySQL中编写查询,然后将其转换为JPQL。