Получить атрибут множественного числа из корневого параметра, который использует ограниченный верхним символом подстановки в критериях 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);
Есть ли способ обойти это?