我有以下结构...
Entity A
- ...
- Collection<B> c (@OneToMany)
Entity B
- ...
- Date d
我希望在我的criteriaQuery中通过orderBy-Statement按日期排序queryResult。我怎样才能做到这一点?
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<A> cq = cb.createQuery(A.class);
Root<A> r = cq.from(A.class);
cq.select(r);
// orderBy-Statement -> cq.orderBy(cb.desc(r.get("c.d")).as(Date.class)));
// Error: javax.servlet.ServletException: javax.ejb.EJBException: java.lang.IllegalArgumentException: Unable to resolve attribute [c.d] against path
List<A> l = em.createQuery(cq).getResultList();
是否可以在查询中进行排序? 如果没有,我应该写一个方法来订购我的resultList,对吗?
答案 0 :(得分:0)
好吧,总而言之,我无法弄清楚如何使用我想要的orderBy-Statement。但是现在我对另一种方法感到满意(在我看来,这是一种更好的方法!):
顺便说一下:我正在使用Primefaces.org框架。为我节省了大量的工作^^
答案 1 :(得分:0)
这个怎么样?
cq.orderBy(cb.desc(r.get("c").get("d")));