Search code examples
javahibernatecriteria

Get record with max id, using Hibernate Criteria


Using Hibernate's Criteria API, I want to select the record within a table with the maximum value for a given column.

I tried to use Projections, creating an alias for max(colunName), then using it in restrictions.eq(), but it keeps telling me "invalid number".

What's the correct way to do that with Hibernate?


Solution

  • You can use a DetachedCriteria to express a subquery, something like this:

    DetachedCriteria maxId = DetachedCriteria.forClass(Foo.class)
        .setProjection( Projections.max("id") );
    session.createCriteria(Foo.class)
        .add( Property.forName("id").eq(maxId) )
        .list();
    

    References