Hibernate条件如何获取具有最大列值的行

时间:2014-10-22 09:08:15

标签: java sql hibernate hibernate-criteria

我有一张如下表:

       user_id   number
        1         10
        2         17
        1         12
        2         18

我的意思是一个用户可以拥有多行。 我必须达到以下结果:

       user_id   number
        1         12
        2         18

我如何用休眠标准实现这个目标?

2 个答案:

答案 0 :(得分:3)

你可以试试这个。

Criteria cr = session.createCriteria(User.class);
cr.setProjection(Projections.projectionList()
            .add(Projections.groupProperty("userId"))
            .add(Projections.max("number")));

这是一个未经测试的代码。

答案 1 :(得分:2)

select u.id, max(u.number) from User u group by u.id

这是您需要的HQL查询。我认为没有任何意义将其转化为标准,但如果你真的想这样做,那就不难了。您需要使用Projections类的投影。