我有如下查询:
Select new mypackage.MyClass( u, max(sc.serviceDate))
from Unit u left join u.serviceCalls sc
where u.organization.key = :organizationKey
所以,我的映射是我有一个Unit,它有一个ServiceCalls(FetchType.LAZY)的集合,并且还有一个组织。每个ServiceCall都有一个serviceDate。
在我的查询中,我想选择整个Unit,但不是所有的serviceCalls。我想获取最新的serviceDate(如果存在)。
尝试通过postgres上的eclipselink执行查询得到以下内容(我从查询输出中删除了一些选定的字段)
Internal Exception: org.postgresql.util.PSQLException: ERROR: column "t0.key" must appear in the GROUP BY clause or be used in an aggregate function
Position: 8
Error Code: 0
Call: SELECT t0.KEY, MAX(t1.service_date) FROM unit t0 LEFT OUTER JOIN service_call t1 ON (t1.unit_key = t0.KEY), organization t2 WHERE ((t2.KEY = ?) AND (t2.KEY = t0.organization_key))
看起来max正在所有服务调用中应用,而不是让每个单元的最大值。有没有办法做到这一点,或者我将不得不接受所有的服务电话并获得最大的收益?
答案 0 :(得分:1)
你最后需要group by u
吗?