我有兩個表:休眠條件加入到表中包含外鍵
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