相关疑难解决方法(0)

具有分页的Spring Data和Native Query

在一个Web项目中,使用最新的spring-data(1.10.2)和MySQL 5.6数据库,我正在尝试使用带有分页的本机查询,但我org.springframework.data.jpa.repository.query.InvalidJpaQueryMethodException在启动时遇到了问题.

更新:20180306此问题现已在Spring 2.0.4中修复.对于那些仍然感兴趣或坚持使用旧版本的用户,请查看相关的答案和注释以获取解决方法.

根据Spring-data文档中使用@Query的示例50,可以指定查询本身和countQuery,如下所示:

public interface UserRepository extends JpaRepository<User, Long> {
  @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
    countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
    nativeQuery = true)
  Page<User> findByLastname(String lastname, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

出于好奇,在NativeJpaQuery课堂上我可以看到它包含以下代码来检查它是否是一个有效的jpa查询:

public NativeJpaQuery(JpaQueryMethod method, EntityManager em, String queryString, EvaluationContextProvider evaluationContextProvider, SpelExpressionParser parser) {
   super(method, em, queryString, evaluationContextProvider, parser);
   JpaParameters parameters = method.getParameters();
   boolean hasPagingOrSortingParameter = parameters.hasPageableParameter() || parameters.hasSortParameter();
   boolean containsPageableOrSortInQueryExpression …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa

52
推荐指数
8
解决办法
7万
查看次数

标签 统计

spring ×1

spring-data ×1

spring-data-jpa ×1