Приведение к подклассу при объединении с базовым классом с использованием CriteriaBuilder (OpenJPA)
У меня простая иерархия TradeCustomer
является OrganisationRole
, OrganisationRole
связан с Organisation
s. Organisation
имеет свойство roles
содержащий все роли организации.
Я хотел бы написать запрос JPA, используя CriteriaBuilder
какой корень Organisation
но получить доступ к свойству TradeCustomer
Например, мне нужно присоединиться Organisation
с OrganisationRole
и бросить его TradeCustomer
,
1 ответ
Вот мое решение:
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.