2016-08-27 9 views
1

У меня простая иерархия TradeCustomer - это . OrganisationRole связан с Organisation s. Organisation имеет свойство roles, содержащее все роли организации.Приведение в подкласс при соединении с базовым классом с использованием CriteriaBuilder (OpenJPA)

Я хотел бы написать запрос JPA использованием CriteriaBuilder, который является корнем Organisation, но доступ к свойству из TradeCustomer, например, мне нужно присоединиться к Organisation с OrganisationRole и бросить TradeCustomer.

ответ

0

Вот мое решение:

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)); 

Важный бит использовать имя столбца (roles) вместо Organisation_.roles.