我在Java Hibernate中有这个
@Query("SELECT dirPar FROM DirectiveParagraph dirPar, Directive dir "
+ "WHERE dirPar.directive = dir "
+ "AND dir.txtDirCode = :txtDirCode ");
List<DirectiveParagraph> getByName(@Param("txtDirCode") String name, @Param("page") int page ,@Param("size") int size);
我希望以限制和大小检索,就像这样
SELECT * FROM tblDirectiveParagraph where intDirectiveID = 1 limit 10,10;
如何为@Query注释添加限制
答案 0 :(得分:7)
您可以尝试在getByName方法中添加Pageable参数
@Query("SELECT dirPar FROM DirectiveParagraph dirPar, Directive dir "
+ "WHERE dirPar.directive = dir "
+ "AND dir.txtDirCode = :txtDirCode ");
Page<DirectiveParagraph> getByName(@Param("txtDirCode") String name, Pageable page);
这是一个示例方法调用:
public void someMethod(){
PageRequest pageR = new PageRequest(10,10);
Page<DirectiveParagraph> result = directiveParagraphRepository.getByName("txtDirCode",pageR);
List<DirectiveParagraph> resultList = result.getContent();
}
答案 1 :(得分:0)
HQL不支持限制。要设置大小,您可以使用setMaxResults。要设置起点,请使用setFirstResult。
Query q = session.createQuery("...");
q.setFirstResult(10);
q.setMaxResults(10);
如果您不想这样做,则必须使用createSQLQuery来编写本机sql查询而不是hql。