I’m new to ORM stuff and I need some help understanding something.
Let’s assume I have the following standard SQL query:
SELECT *, COUNT(test.testId) AS noTests FROM inspection
LEFT JOIN test ON inspection.inspId = test.inspId
GROUP BY inspection.inspId
which I want to use in JPA.
I have an Inspection entity with a one-to-many relationship to a Test entity. (an inspection has many tests)
I tried writing this in JPQL:
Query query = em.createQuery("SELECT insp, COUNT(???what???) " +
"FROM Inspection insp LEFT JOIN insp.testList " +
"GROUP BY insp.inspId");
1) How do I write the COUNT clause? I’d have to apply count to elements from the test table but testList is a collection, so I can’t do smth like COUNT(insp.testList.testId)
2) Assuming 1 is resolved, what type of object will be returned. It will definitely not be an Inspection object… How do I use the result?
AS)Listwith the returned valuesSo:
Or
The result is then accessible either as an instance of
ResultHolder, or as ajava.util.List, where theinspislist.get(0), and the count islist.get(1)