Приведение к подклассу при объединении с базовым классом с использованием CriteriaBuilder (OpenJPA)

У меня простая иерархия TradeCustomer является OrganisationRole, OrganisationRole связан с Organisations. 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.

Другие вопросы по тегам