JPA найти последнюю запись

Я хотел бы знать, как лучше всего получить последнюю запись таблицы с JPA. В Sql то, что я ищу, будет похоже на:

select id from table order by id desc limit 1 

Я думал о модели.count () но это больше похоже на хак, чем на хорошее решение;)

2 ответов


вы могли бы использовать JPQL query что очень похоже на ваш запрос.

select t from JpaClass t order by t.id desc

после того как вы создать свой Query object затем вы можете позвонить

query.getSingleResult() or call query.setMaxResults(1)

следовал по

query.getResultList()

EDIT: моя ошибка: обратите внимание на комментарий mtpettyp ниже.

не используйте запрос.getSingleResult () в качестве исключения может быть вызван, если там не точно одна строка возвращается-см. java.sun.com/javaee/5/…() - mtpettyp

Go с setMaxResults и getResultList.

query.setMaxResults(1).getResultList();

результаты методов запроса могут быть ограничены с помощью ключевых слов первый или top, который можно использовать взаимозаменяемо. Необязательное числовое значение можно добавить в top / first, чтобы указать максимальный размер возвращаемого результата. Если число опущено, предполагается размер результата 1.

JpaClass findFirstByOrderByIdDesc();

ссылка на Spring Data JPA docs