我正在开发一个使用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
答案 0 :(得分:5)
使用hibernates函数进行分页! setFirstResult(),setMaxResults()
答案 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
答案 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) {}