Spring Data JPA自定义查询限制功能无法正常工作

4 spring hibernate spring-data spring-data-jpa spring-boot

我创建了一个自定义查询

@Repository
public interface SecurityQuestionRepository extends JpaRepository<SecurityQuestion, Integer>{

    @Query("select q from SecurityQuestion q order by q.questionId asc limit 0, 3 ")
    public List<SecurityQuestion> findQuestion();

}
Run Code Online (Sandbox Code Playgroud)

当我调用服务并调用公共List<SecurityQuestion> findQuestion()方法limit 0,3不起作用

这是休眠日志,

Hibernate: select securityqu0_.question_id as question1_4_, securityqu0_.question_desc as question2_4_ from user_security_question securityqu0_ order by securityqu0_.question_id asc
Run Code Online (Sandbox Code Playgroud)

如何使此限制功能在此工作?

Bla*_*ank 9

尝试使用类型传递方法参数Pageable:

@Query("select q from SecurityQuestion q order by q.questionId asc")
public List<SecurityQuestion> findQuestion(Pageable page);
Run Code Online (Sandbox Code Playgroud)

当你调用这个函数时,init page就像这样:

securityQuestionRepository.findQuestion(new PageRequest(0, 3));
Run Code Online (Sandbox Code Playgroud)

或者只使用本机查询:

@Query(nativeQuery = true,
       value = "select * from user_security_question order by question_id asc limit 0, 3")
public List<SecurityQuestion> findQuestion();
Run Code Online (Sandbox Code Playgroud)


Cep*_*pr0 6

有一个更简单的变体:

public interface SecurityQuestionRepository extends JpaRepository<SecurityQuestion, Integer>{

    List<SecurityQuestion> findTop3ByOrderByIdAsc();
}
Run Code Online (Sandbox Code Playgroud)

更多信息请参见此处