Я хотел бы знать, что лучший способ получить последнюю запись таблицы с JPA. В Sql то, что я ищу, будет следующим:
select id from table order by id desc limit 1
Я думал о model.count(), но это звучит скорее как взломать, чем хорошее решение;)
Я хотел бы знать, что лучший способ получить последнюю запись таблицы с JPA. В Sql то, что я ищу, будет следующим:
select id from table order by id desc limit 1
Я думал о model.count(), но это звучит скорее как взломать, чем хорошее решение;)
Вы можете использовать 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();
Результаты запросов могут быть ограничены ключевыми словами сначала или top, которые можно использовать взаимозаменяемо. Дополнительное числовое значение может быть добавлено в верхний/первый, чтобы указать максимальный размер результата, который будет возвращен. Если число не указано, предполагается, что размер результата равен 1.
JpaClass findFirstByOrderByIdDesc();
Для пользователей, которые решили использовать entityManager, попробуйте это:
public List<T> findNRows(int n){
return entityManager.createQuery("from "+entityClass.getSimpleName()+" ORDER BY id DESC",entityClass).setMaxResults(n).getResultList();
}