Hibernate是不是支持MySql中的limit语句?

Posted

技术标签:

【中文标题】Hibernate是不是支持MySql中的limit语句?【英文标题】:Does Hibernate support the limit statement in MySql?Hibernate是否支持MySql中的limit语句? 【发布时间】:2010-12-20 14:14:15 【问题描述】:

我正在开发一个使用 Java、mysql、Struts2 MVC 和 Hibernate 的项目。我尝试在 hql 查询中使用 limit 语句,但它不能正常工作。

Select t from table1 t where t.column1 = :someVal limit 0,5

编辑:我将其用作 namedQuery 并使用 JPA 模板调用此 namedQuery

这在 MySql 中可以正常工作,但是当我将其作为 hql 查询运行时,它会返回所有记录,而不考虑限制语句。有没有人遇到同样的问题??任何帮助表示赞赏!

问候,RDJ

【问题讨论】:

【参考方案1】:

使用休眠功能进行分页! setFirstResult(), setMaxResults()

http://www.javalobby.org/java/forums/t63849.html

【讨论】:

【参考方案2】:

使用Query.setMaxResults(..)

【讨论】:

我正在使用 NamedQuery 。函数 setFirstResult() 和 setMaxResults() 可以与 namedQuery 一起使用吗?? 你为什么不尝试阅读javadoc,或者在你的IDE中打开自动完成功能看看?【参考方案3】:

我认为, 如果我们使用 Criteria 我们可以指定

Crietria c=session.createCriteria(Emp.class); c.setFirstResult(0); c.setMaxResult(5); 列表 list=c.list();

这里 0 和 5 作为限制 0,5

来源:http://www.javatpoint.com/hcql

【讨论】:

【参考方案4】:
    List<Employee> dataList = null;
    Query hQuery = null;

    try 
        // Getting Session

        hSession = HibernateSessionFactory.getSession();
        hTransaction = hSession.beginTransaction();
        hQuery = hSession.getNamedQuery(query);

                    Iterator<Object> hIterator = paramMap.entrySet().iterator();

                    while (hIterator.hasNext()) 

     Map.Entry<String, Object> paramPair = (Map.Entry<String,Object>) hIterator.next();    

 hQuery.setParameter(paramPair.getKey(), paramPair.getValue());

        

        hQuery.setFirstResult(1);
        hQuery.setMaxResults(100);

        System.out.println(hQuery);
        dataList = hQuery.list();

        hTransaction.commit();

     catch (Exception e) 
        hTransaction.rollback();


     finally 
        try 
            hSession.flush();
            HibernateSessionFactory.closeSession();
         catch (Exception hExp) 

【讨论】:

这只是一堆代码。关于这如何帮助 OP 的具体问题的一些解释会很好 你可以在Query接口中找到两个方法setFirstResult(),setMaxResults(),这有助于在分页中获取记录..

以上是关于Hibernate是不是支持MySql中的limit语句?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 5 中的 NativeQuery 调用是不是仍支持 HQL?

Hibernate执行原生SQL

MYSQL 和 Hibernate:插入默认值 0 而不是“null”

hibernate中的主键生成策略

hibernate中的主键生成策略

Hibernate 5 是不是支持基于 XML 的实体映射?