在Hibernate 3中,是否有一种方法可以在HQL中实现与以下MySQL限制相同的功能?
select * from a_table order by a_table_column desc limit 0, 20;
如果可能的话,我不想使用setMaxResults。在旧版本的Hibernate/HQL中,这是绝对可能的,但它似乎已经消失了。
在Hibernate 3中,是否有一种方法可以在HQL中实现与以下MySQL限制相同的功能?
select * from a_table order by a_table_column desc limit 0, 20;
如果可能的话,我不想使用setMaxResults。在旧版本的Hibernate/HQL中,这是绝对可能的,但它似乎已经消失了。
当前回答
您可以很容易地为此使用分页。
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
@Query("select * from a_table order by a_table_column desc")
List<String> getStringValue(Pageable pageable);
你必须传递new PageRequest(0,1)来获取记录,并从列表中获取第一条记录。
其他回答
// SQL: SELECT * FROM table LIMIT start, maxRows;
Query q = session.createQuery("FROM table");
q.setFirstResult(start);
q.setMaxResults(maxRows);
您可以很容易地为此使用分页。
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
@Query("select * from a_table order by a_table_column desc")
List<String> getStringValue(Pageable pageable);
你必须传递new PageRequest(0,1)来获取记录,并从列表中获取第一条记录。
如果您不想在Query对象上使用setMaxResults(),那么您总是可以恢复到使用普通SQL。
Criteria criteria=curdSession.createCriteria(DTOCLASS.class).addOrder(Order.desc("feild_name"));
criteria.setMaxResults(3);
List<DTOCLASS> users = (List<DTOCLASS>) criteria.list();
for (DTOCLASS user : users) {
System.out.println(user.getStart());
}
String hql = "select userName from AccountInfo order by points desc 5";
这为我工作,没有使用setmaxResults();
只在最后一个(在本例中是5)中提供最大值,而不使用关键字limit。 : P