0
我嘗試按一個字段排序,但我在sql-debugger中看到sql不包含order-clause。CriteriaQuery無序
我的標準代碼是
GenericDaoImpl<T> {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> cq = getCriteriaQuery(cb);
Root<T> entity = getRoot(cq);
cq.select(entity);
TypedQuery<T> q = em.createQuery(cq);
cq.orderBy(cb.asc(entity.get(order)));
而且
public class GenericDaoClient extends GenericDaoImpl<Client> {
@Override
protected CriteriaQuery<Client> getCriteriaQuery(CriteriaBuilder cb){
return (CriteriaQuery<Client>) cb.createQuery(Client.class);
}
@Override
protected Root<Client> getRoot(CriteriaQuery cq){
return cq.from(Client.class);
}
比我打電話給我的DAO得到有序列表:
dao.findAll(false,page*step+1,(page-1)*step+1,"conferm");
結果我的SQL查詢沒有按」沒有訂單條款:
select client0_.idCl as idCl218_ ... from Client client0_ limit ?, ?
「Client」類中使用的註釋是什麼? – harsh 2013-04-22 16:53:51
此問題與JSF和RichFaces無關。 – 2013-04-22 17:05:31
它與Hibernate無關。這是通用的JPA。 Hibernate可能(或可能不)是你的提供者,但你正在編寫的Criteria Queries只是基於JPA--沒有什麼特定的Hibernate。 – Mike 2013-04-22 19:03:45