web-dev-qa-db-ja.com

カウントクエリを指定した場合でも、動的な並べ替えやページネーションでネイティブクエリを使用できません

@ Query(value = "select * from paper_entry where owner null or owner =?1"、countQuery = "select count(*)from paper_entry where owner null or owner =?1 "、nativeQuery = true)

ページfindAll(Long userId、Pageable pageable);

Mysql 5.7、spring-data-jpa1.11.3.RELEASEを使用しています。ご覧のとおり、私はドキュメントに従います https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query 。しかし、私はこのエラーが発生しました。

原因:org.springframework.data.jpa.repository.query.InvalidJpaQueryMethodException:メソッドpublic abstract org.springframework.data.domain.Pagecom.gbdata.entry.persistence.daoで動的な並べ替えやページ付けを行うネイティブクエリを使用できません.PaperEntryRepository.findAll(Java.lang.Long、org.springframework.data.domain.Pageable)at org.springframework.data.jpa.repository.query.NativeJpaQuery。(NativeJpaQuery.Java:55)〜[spring-data-jpa -1.11.3.RELEASE.jar:na] at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.Java:72)〜[spring-data-jpa-1.11.3.RELEASE.jar: na] at......。

6
JiaLun Li

解决没? SQL里面加ORDER BY ?#{#pageable}就可了

@Query(
        value = "select * from paper_entry where owner is null or owner = ?1 ORDER BY ?#{#pageable}",
        countQuery = "select count(*) from paper_entry where owner is not null or owner = ?1 ORDER BY ?#{#pageable}",
        nativeQuery = true)
    Page findAll(Long userId, Pageable pageable);

これと重複しています 質問

26
zhouji