2016-08-27 9 views
1

간단한 계층 구조가 있습니다 TradeCustomerOrganisationRole입니다. OrganisationRoleOrganisation에 연결됩니다. Organisation에는 조직의 모든 역할을 포함하는 roles 속성이 있습니다.CriteriaBuilder (OpenJPA)를 사용하여 기본 클래스와 조인 할 때 하위 클래스로 캐스팅

내가 예를 들어, Organisation입니다 루트 CriteriaBuilder를 사용하여 JPA의 쿼리를 작성하지만 TradeCustomer의 속성에 액세스하고 싶습니다, 나는 OrganisationRoleOrganisation에 가입하고 TradeCustomer에 캐스팅해야합니다.

CriteriaQuery<String> query = cb.createQuery(String.class); 
Root<Organisation> root = query.from(Organisation.class); 
Join<Organisation, TradeCustomer> tcJoin = root.join("roles"); 
query.select(tcJoin.get(TradeCustomer_.rate)); 

중요한 비트 대신 Organisation_.roles의 열 (roles)의 이름을 사용하는 것입니다

답변

0

여기 내 솔루션입니다.