【发布时间】:2015-11-21 14:55:43
【问题描述】:
我想根据一列的值过滤表,然后获取每个值的最大值。
例如
id | value
-----------
0 | 10
0 | 22
0 | 50
1 | 33
1 | 4
2 | 5
2 | 23
2 | 33
3 | 22
3 | 50
按ID为2和3的行过滤,然后得到每个id的最大值
id | value
-----------
2 | 33
3 | 50
我如何通过休眠来使用它?
这是我的尝试:
List<int> ids = ... // Retreived from elsewhere
Disjunction disjunction = Restrictions.disjunction();
for(int id: ids){
disjunction.add(Restrictions.eq("id", id)); // Specify which IDs
}
@SuppressWarnings("unchecked")
List<Item> items= (List<Item>) sessionFactory.getCurrentSession()
.createCriteria(Item.class)
.add(disjunction)
.setProjection(
Projections.projectionList()
.add(Projections.max("value"))
.add(Projections.groupProperty("id")
)
)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
这只是给我最高值的“id”(例如 3,而不是整行)
我正在尝试在 spring mvc 应用程序中执行此操作。
提前致谢
【问题讨论】:
标签: java hibernate spring-mvc