Операции сбора JPA CriteriaBuilder с сущностью / объектом
Я использую API JPA CriteriaBuilder для генерации запросов, у меня есть следующий набор bean-компонентов:
- Исполнитель (содержит данные об исполнителе, такие как имя, пол, адрес и т. Д.)
- Роль (содержит роли, сыгранные исполнителем, такие как идентификатор роли, тип роли, описание роли и т. Д.)
Художник может играть разные роли, так что это отношения один-ко-многим, ч / б Исполнитель и Роли. Я хочу написать запрос, используя построитель критериев, чтобы выбрать всех художников, которые не играли роль "ГЕРОЯ":
Я обнаружил, что API для построения критериев предоставляет функции для обработки коллекций, такие как:
<E,C extends Collection<E>> Predicate isNotMember(Expression<E> elem,
Expression<C> collection)
Однако примеры, которые я нашел в Интернете для этих функций, в основном используют коллекцию строк. Как показано на этом сайте ( http://www.objectdb.com/java/jpa/query/jpql/collection) проверяет, что языковая коллекция не содержит французский:
Predicate m4 = cb.isNotMember("French", languages);
Как я могу использовать ту же функцию "isNotMember" с Entity, чтобы выбрать всех исполнителей, которые не имеют роли с roleType как HERO?