У меня есть класс сущностей X, в котором есть коллекция сущностей Y.
X
@ManyToMany
private List<Y> items = new ArrayList<>();
Я пытаюсь сделать ограничение запроса критериев JPA, чтобы проверить, существует ли экземпляр Y в коллекции.
X entity = ...; // Some instance
Predicate p = criteriaBuilder.isMember(entity, subRoot.get(X_.items))
Выдает ошибку: (argument mismatch; ListAttribute<X,Y> cannot be converted to PluralAttribute<X,C,E>))
Когда я смотрю на метамодель, атрибут List выглядит так:
public static volatile ListAttribute<X, Y> items;
Переходим к определению ListAttribute:
public interface ListAttribute<X extends Object, E extends Object>
extends PluralAttribute<X, List<E>, E> {
Я пробовал использовать criteriaBuilder.isMember(entity, (PluralAttribute)subRoot.get(X_.items))
и переходить от набора к списку.
Должно ли это быть возможно или есть альтернативный способ проверить, встречается ли объект в коллекции в запросе JPA Criteria?