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

时间:2009-11-26 06:57:32

标签: mysql hibernate orm

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

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

编辑:我使用它作为命名查询并使用JPA模板

调用此namedQuery

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

问候,RDJ

4 个答案:

答案 0 :(得分:5)

使用hibernates函数进行分页! setFirstResult(),setMaxResults()

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

答案 1 :(得分:1)

使用Query.setMaxResults(..)

答案 2 :(得分:0)

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

  

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

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

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

答案 3 :(得分:-1)

    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) {}