我有一个包含internalId,value和date行的表。有多个条目具有相同的internalId但日期不同。我只对每个internalId的最新值感兴趣。如何使用Criteria进行管理?这是我目前的基本代码:
Criteria criteria = session.createCriteria(myClass.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("internalId"));
projList.add(Projections.property("value"));
projList.add(Projections.property("date"));
criteria.setProjection(projList);
criteria.add(Restrictions.in("internalId", internalIds));
List list = criteria.list();
答案 0 :(得分:0)
根据我的理解,你想要的是完成这样的事情:
SELECT
internalId,
value,
max(date) as date
FROM
table
WHERE
internalId IN (1, 2, 3, 4 ...)
GROUP BY
internalId
这可以通过Projections max功能实现:
projList.add(Projections.max("date"));
和groupProperty函数
projList.add(Projections.groupProperty("internalId"))
供参考:http://docs.jboss.org/hibernate/orm/3.5/reference/en/html_single/#querycriteria