Есть такой класс:
protected static class SpecificationConverter implements Specification<ProductInboundEntity> {
protected Specification<ProductInbound> spec;
public SpecificationConverter(Specification<ProductInbound> spec) {
this.spec = spec;
}
@Override
public Predicate toPredicate(Root<ProductInboundEntity> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return spec.toPredicate(root, query, cb);
}
}
Specification interface:
public interface Specification<T> {
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb);
}
При компиляции выдаёт ошибку:
error: incompatible types: Root<ProductInboundEntity> cannot be converted to Root<ProductInbound>
Класс ProductInboundEntity реализует интерфейс ProductInbound. Т.е. return spec.toPredicate(root, query, cb); ожидает Root<ProductInbound> (интерфейс) а я ему передаю Root<ProductInboundEntity> (объект класса реализующий этот интерфейс).
В чём может быть проблема?