1
간단한 계층 구조가 있습니다 TradeCustomer
은 OrganisationRole
입니다. OrganisationRole
은 Organisation
에 연결됩니다. Organisation
에는 조직의 모든 역할을 포함하는 roles
속성이 있습니다.CriteriaBuilder (OpenJPA)를 사용하여 기본 클래스와 조인 할 때 하위 클래스로 캐스팅
내가 예를 들어, Organisation
입니다 루트 CriteriaBuilder
를 사용하여 JPA의 쿼리를 작성하지만 TradeCustomer
의 속성에 액세스하고 싶습니다, 나는 OrganisationRole
와 Organisation
에 가입하고 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
)의 이름을 사용하는 것입니다