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

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

16 голосов
/ 14 января 2010

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

select id from table order by id desc limit 1 

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

Ответы [ 3 ]

36 голосов
/ 06 мая 2017

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

JpaClass findFirstByOrderByIdDesc();

ссылка на документы Spring Data JPA

23 голосов
/ 14 января 2010

Вы можете использовать JPQL query, который выглядит очень похоже на ваш запрос.

select t from JpaClass t order by t.id desc

После того, как вы установите Query object, вы можете позвонить

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

с последующим

query.getResultList()

РЕДАКТИРОВАТЬ: Моя ошибка: пожалуйста, обратите внимание на комментарий mtpettyp ниже.

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

Перейти с setMaxResults и getResultList.

query.setMaxResults(1).getResultList();
0 голосов
/ 12 июня 2019

Для пользователей, которые решили использовать entityManager, попробуйте это:

public List<T> findNRows(int n){
        return entityManager.createQuery("from "+entityClass.getSimpleName()+" ORDER BY id DESC",entityClass).setMaxResults(n).getResultList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...