如何为 Hibernate 查询注释添加限制?
Posted
技术标签:
【中文标题】如何为 Hibernate 查询注释添加限制?【英文标题】:How to add limit to Hibernate query annotation? 【发布时间】:2014-08-09 03:09:00 【问题描述】:我在 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注解添加限制
【问题讨论】:
【参考方案1】:您可以尝试在 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();
【讨论】:
【参考方案2】:HQL 不支持限制。要设置大小,您将使用 setMaxResults。要设置起点,请使用 setFirstResult。
Query q = session.createQuery("...");
q.setFirstResult(10);
q.setMaxResults(10);
如果您不想那样做,您将不得不使用 createSQLQuery 来编写原生 sql 查询而不是 hql。
【讨论】:
Op 专门询问了一个使用@Query 注解的案例。以上是关于如何为 Hibernate 查询注释添加限制?的主要内容,如果未能解决你的问题,请参考以下文章