在HQL中使用GROUP BY时如何返回对象?

时间:2012-03-14 19:53:41

标签: java orm hql

我有一个消息表,其中包含IDFROM_IDTO_IDDATEMESSAGE列,其中包含常用的实体bean定义。我正在尝试编写一个查询,其中给定一个收件人(又名TO_ID)返回每个用户的最新消息(即对于每个唯一FROM_ID,返回最大DATE的记录)。

我提出的查询是:

SELECT                           
   m.id, m.fromId, m.toId, m.message, max(m.sharedDate),
FROM                             
   Messages m                       
WHERE                            
   m.toId = ?           
GROUP BY                         
   m.fromId    

现在,我可以将这些列带回来并用它们填充bean,但有没有办法让Hibernate这样做?

1 个答案:

答案 0 :(得分:1)

在构造函数调用中包装选定的列:

select new WrapperBean(m.id, m.fromId, m.toId, m.message, max(m.sharedDate))...

其中WrapperBean有一个带有这些args的构造函数。