JPA和聚合函数。如何使用查询结果?
我是ORM的新手,我需要一些帮助来理解一些东西。
假设我有以下标准SQL查询:
SELECT *, COUNT(test.testId) AS noTests FROM inspectionLEFT JOIN test ON inspection.inspId = test.inspId
GROUP BY inspection.inspId
我想在JPA中使用。
我有一个与测试实体一对多关系的检验实体。(检查有很多测试)我尝试用JPQL编写此代码:
Query query = em.createQuery("SELECT insp, COUNT(???what???) " + "FROM Inspection insp LEFT JOIN insp.testList " +
"GROUP BY insp.inspId");
1)如何编写COUNT子句?我必须将计数应用于测试表中的元素,但testList是一个集合,所以我不能做这样的事情COUNT(insp.testList.testId)
2)假设解析为1,将返回哪种类型的对象。绝对不是检查对象…如何使用结果?
回答:
- 您可以为加入的实体提供别名(使用
AS
) - 您可以创建一个新对象,也可以
List
使用返回值创建一个
所以:
SELECT new com.yourproject.ResultHolder(insp, COUNT(test.testId)) FROM Inspection insp LEFT JOIN insp.testList AS test GROUP BY insp.inspId
要么
SELECT new list(insp, COUNT(test.testId)) FROM Inspection insp LEFT JOIN insp.testList AS test GROUP BY insp.inspId
然后,可以将结果作为的实例ResultHolder
或作为进行访问java.util.List
,其中insp
is是list.get(0)
,count为list.get(1)
以上是 JPA和聚合函数。如何使用查询结果? 的全部内容, 来源链接: utcz.com/qa/416099.html