Я обнаружил, что совместное использование 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.