2011-10-13 3 views
0


나는 ... 해 orderBy 및 OneToMany - 관계 - JPA와 기준 쿼리 2.0

Entity A 
    - ... 
    - Collection<B> c (@OneToMany) 

Entity B 
    - ... 
    - Date d 

은 내가 queryResult가있는 해 orderBy-성명을 통해 날짜 d만큼 주문하기 위해 다음과 같은 구조를 원하는 한 내 criteriaQuery. 이것을 어떻게 할 수 있습니까?

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

글쎄, 나는 내가 원하는 orderBy-Statement를 사용하는 방법을 알아낼 수 없었다. 하지만 지금은 다른 접근 방식에 만족 해요 (더 나은 하나 내 생각에!) :

  1. 데이터 모델을 생성하고 GUI에서 사용 (정렬되지 않은) 데이터베이스에서 필요한 데이터를 가져 오기
  2. 방법함으로써 데이터 모델/GUI

에 정렬/순서를 수행 : 나는 Primefaces.org 프레임 워크를 사용하고 있습니다. 나에게 많은 일을 아끼지 마라 ^^

0

이 사람은 어떨까요?

cq.orderBy(cb.desc(r.get("c").get("d")));