如何为Hibernate查询注释添加限制?

时间:2014-06-18 17:51:01

标签: java mysql hibernate jdbc spring-data-jpa

我在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注释添加限制

2 个答案:

答案 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。