Есть такой класс:
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> (объект класса реализующий этот интерфейс).
В чём может быть проблема?


