使用休眠条件获取具有最大 ID 的记录
使用Hibernate的 Criteria API,我想在表中选择具有给定列的最大值的记录。
我试图使用投影,为 创建一个别名,然后在limitings.eq()
中使用它,但它一直告诉我“无效数字”。max(colunName)
使用Hibernate的正确方法是什么?
使用Hibernate的 Criteria API,我想在表中选择具有给定列的最大值的记录。
我试图使用投影,为 创建一个别名,然后在limitings.eq()
中使用它,但它一直告诉我“无效数字”。max(colunName)
使用Hibernate的正确方法是什么?
您可以使用 来表示子查询,如下所示:DetachedCriteria
DetachedCriteria maxId = DetachedCriteria.forClass(Foo.class)
.setProjection( Projections.max("id") );
session.createCriteria(Foo.class)
.add( Property.forName("id").eq(maxId) )
.list();
我发现使用和一起工作对我有用。addOrder
setMaxResults
Criteria c = session.createCriteria(Thingy.class);
c.addOrder(Order.desc("id"));
c.setMaxResults(1);
return (Thingy)c.uniqueResult();
使用MySQL方言,这会生成一个SQL预准备语句,如下所示(剪掉一些字段):
select this_.id ... from Thingy this_ order by this_.id desc limit ?
我不确定这个解决方案是否对MySQL以外的方言有效。