JPA GROUP BY entity - is this possible? JPA GROUP BY entity - is this possible? sql sql

JPA GROUP BY entity - is this possible?


Please explicitly use JOIN in this use case:

SELECT ve, MAX(v.validTill)FROM TraInsurance v JOIN v.vehicle veGROUP BY veORDER BY MAX(v.validTill)


Apparently the JPA spec allows that but at least Hibernate's implementation does not support it (see HHH-2436 and HHH-1615).


If you pass an entity inside the GROUP BY, Hibernate automatically adds its id to the transformed SQL of the underlying DB. In addition, the values in the GROUP BY must exist in the SELECT clause. Thus, instead of select the whole object, you can select its id, then from those ids, you can retrieve the object again.

 SELECT DISTINCT v.vehicle.id, max(v.validTill) FROM TraInsurance v  GROUP BY v.vehicle.id ORDER BY max(v.validTill)

If it takes time and requires DB hits to retrieve Vehicle objects from their ids, you can select all of Vehicle's attributes in the SELECT and put them in the GROUP BY. Then you can construct the Vehicle object from those attributes without accessing to DB.