Hibernate Criteria - 给定列表中的最大值

时间:2015-05-27 07:17:28

标签: java hibernate hibernate-criteria detachedcriteria

我使用Hibernate Criteria,我想为每组值选择最大值,这个最大值必须包含在给定列表中。

示例:

select t.field1, max(t.field2) as total
from table t
where t.field2 in :givenList 
group by t.field1
order by total desc;

我试过这样做:

Criteria criteria = session.createCriteria(Table.class);
DetachedCriteria maxNo = DetachedCriteria.forClass(Table.class);
ProjectionList projection = Projections.projectionList();
projection.add(Projections.groupProperty("id.field1"));
projection.add(Projections.max("id.field2"));
maxNo.setProjection(projection);
criteria.add(Subqueries.propertiesIn(new String[] {"id.field1", "id.field2"}, maxNo));

此代码工作正常但只返回每个组的最大值。

如果我尝试添加其他约束,请执行以下操作:

criteria.add(Property.forName("id.field2").in(givenList));

请求无法正常运行。基本情况下,该组的最大值为2,给定列表为(0,1),在这种情况下,我们不会收到该组的任何内容。

我希望你能帮助我。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

$('input').on('click', function(event) {
    $(this).attr('value', 'yourNewValue');
    // do stuff here...
});

实际上,我错误地将限制条件放在标准中。我们应该将限制放在DetachedCriteria中。

无论如何,谢谢你