我有两个表:休眠条件加入到表中包含外键
Client (clientId, firstName, lastName, gender)
Event (clientId, eventId)
我要代表类似于以下使用条件的查询:
SELECT c.clientId, c.firstName, c.lastName, c.gender, MAX(eventId)
FROM Client c JOIN Event e ON c.clientId = e.clientId
GROUP BY c.clientId, c.firstName, c.lastName, c.gender
我已经试过这样:
final Criteria criteria = session.createCriteria(Client.class);
criteria.setFetchMode("Event", FetchMode.JOIN);
criteria.setProjection(Projections.projectionList().add(Projections.groupProperty("clientId")).add(Projections.max("eventId")));
但它在带消息的最后一行上引发异常:
HibernateQueryException:无法解析属性:的事件ID: 客户
我怎么可以指定它本身包含的Event
没有相关的事件表列,但clientId
列Client
表之间的连接表是一个外键返回到Client
表吗?
正如你所看到的,它真的赶走了Client
表,我只需要从Event
表中选择最大eventId
。另外,正如我所提到的,我正在尝试对基于Client
类的现有Criteria查询进行更改。它用于检索所有活动客户端的所有列。我只需要在查询结果中添加一个额外的列 - 最大值为eventId
。
不完全正确。 “客户”类可能不知道“事件”类。 – 2013-04-09 04:15:06
雅正确的感谢。更改了答案 – 2013-04-09 04:26:44