Hibernate: Как получить последние n строк в весенней загрузке JpaRepository? - PullRequest
0 голосов
/ 09 февраля 2019

Я работаю с весенней загрузкой и репозиторием jpa. Я хочу получить последние 2 записи из базы данных, используя hql-запрос.Я написал следующий запрос, но он не работает.

@Query("select news from(select news from NewsDTO news order by news.newsId desc limit 2) sub order by news.newsId asc")

Выдает следующее исключение

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 17 [select news from(select news from com.mer.aigs.dto.news.NewsDTO news order by news.newsId desc limit 2) sub order by news.newsId asc]

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019
Hql не поддерживает ключевое слово

limit (в разных базах данных оно различно).Вам необходимо создать Query с помощью диспетчера сущностей и указать максимальный размер:

em.createQuery("your query").setMaxResults(2).getResultList()

при условии, что вам введен диспетчер сущностей:

@Autowired
private EntityManager em

Это решение работает лучше, чем при использовании Pageable.

0 голосов
/ 09 февраля 2019

JPQL изначально не поддерживает предложение LIMIT.Вместе с Spring Data JPA вы можете использовать комбинацию ORDER BY .. DESC и Pageable для достижения того, что вы собираетесь.См. Это для получения подробной информации https://www.logicbig.com/tutorials/spring-framework/spring-data/pagination.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...