Получить атрибут множественного числа из корневого параметра, который использует ограниченный верхним символом подстановки в критериях API?

У меня есть следующая иерархия сущностей:

@Entity
public abstract class AbstractEntity {
    ...
    @OneToMany
    private List<Tag> tags;
    ...
}

@Entity
public class Entity1 extends AbstractEntity { ... }

@Entity
public class Entity2 extends AbstractEntity { ... }

Я использую один и тот же метод для построения предикатов для обоих подклассов:

private List<Predicate> buildPredicates(CriteriaBuilder cb, Root<? extends AbstractEntity> root)

Я получаю следующую ошибку компиляции из этого метода при вызове root.get(AbstractEntity_.tags):

The method get(SingularAttribute<? super capture#18-of ? extends AbstractEntity,Y>) in the type Path<capture#18-of ? extends AbstractEntity> is not applicable for the arguments (ListAttribute<AbstractEntity,Tag>),

Проблема заключается в сигнатуре метода из Path интерфейс, так как он не ожидает никаких подстановочных знаков:

<E, C extends java.util.Collection<E>> Expression<C> get(PluralAttribute<X, C, E> collection);

Есть ли способ обойти это?

0 ответов

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