JPQL-аннотация с лимитом и смещением - PullRequest
13 голосов
/ 24 февраля 2012

У меня есть интерфейс репозитория с некоторыми абстрактными методами, где я использую аннотацию @Query. Теперь я хотел бы добавить поддержку ограничения и смещения для этих запросов.

пример:

public interface ProductRepository
   extends CrudRepository<Product, Long> {

    @Query("from Product")
    List<Product> findAllProducts();
}

примерно так было бы неплохо

public interface ProductRepository
   extends CrudRepository<Product, Long> {

    @Query("from Product limit :limit ")
    List<Product> findAllProducts(@Param("limit") Integer limit);
}

Но это не работает. Есть решение, что я создаю реализацию интерфейса (/3711190/ogranichit-kolichestvo-rezultatov-v-jpql) Но мне интересно, нет ли возможности добавить смещение и лимит к запросу или есть аннотация для этого.

Ответы [ 2 ]

11 голосов
/ 29 июня 2013

+ 1 тому, что пользователь "его" сказал в комментарии:

"стандартный способ решения фундаментальной проблемы - это использование PagingAndSortingRepository"

Вот пример.Я добавляю сортировку в качестве дополнительного бонуса:

public interface ArtifactRepo extends JpaRepository<Artifact, Long> {
    Page<Artifact> findByComponentKey(String componentKey, Pageable pageable);
}

(Вы можете использовать @Query выше, если хотите, но JPQL сам по себе не поддерживает ограничения, как отмечалось "его".)

Затем при вызове используйте

PageRequest pageRequest =
    new PageRequest(0, 1, Sort.Direction.DESC, "buildNumber");
Page<Artifact> artifactsPage =
    artifactRepo.findByComponentKey(componentKey, pageRequest);

Я написал несколько сообщений в блоге на эту тему, которые могут оказаться полезными:

http://springinpractice.com/blog/categories/chapter-02-data/

6 голосов
/ 24 февраля 2012

limit не поддерживается JPQL. Даже без этого ваши запросы недействительны JPQL-запросы (но могут быть действительными HQL - и могут работать, если ваш JPA-провайдер терпим).

Требуется (частичная) реализация, чтобы вы могли использовать интерфейс Query или критерии api.

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