Spring Projection отображает неверный результат при использовании расширяет интерфейс

У меня есть два интерфейса проекции,
Первый, ProductMinimal.java:

public interface ProductMinimal {
    long getId();
    String getName();
    Long getOwnerId();
    String getOwnerName();
    String getFeaturedImage();
}

и второй ProductStatistic.java

public interface ProductStatistic extends ProductMinimal {
    int getTotalVisit();
}

Когда я использую этот репозиторий:

Page<ProductStatistic> findMostView(Pageable pageable);

Я получаю результат, но ошибочно сопоставлен:

[{
    name=1, WRONG
    id=Name, WRONG
    ownerId=administrator, WRONG
    ownerName=21_d20024e8-970f-4738-9cea-8dda22d0afdd.jpg, WRONG
    featuredImage=1, WRONG
    totalVisit=21
}]

так должно быть:

[{
    name=Name,
    id=1,
    ownerId=1,
    ownerName=administrator,
    featuredImage=21_d20024e8-970f-4738-9cea-8dda22d0afdd.jpg,
    totalVisit=21
}]

но когда я помещаю весь метод в ProductMinimal в ProductStatistic и удаляю родительский интерфейс в ProductStatistic, то у ProductStatistic все свой собственный атрибут:

public interface ProductStatistic {
    long getId();
    String getName();
    Long getOwnerId();
    String getOwnerName();
    String getFeaturedImage();
    int getTotalVisit();
}

используя новый этот ProductStatistic, теперь я получаю ожидаемый результат.

[{
    name=Name,
    id=1,
    ownerId=1,
    ownerName=administrator,
    featuredImage=21_d20024e8-970f-4738-9cea-8dda22d0afdd.jpg,
    totalVisit=21
}]

Мне не нравится использовать этот способ, переписать все существующие свойства.
Я ожидаю, что смогу расширить свойства из ProductMinimal, поэтому мне не нужно переписывать код.
Почему использование проекции на основе интерфейса, которая расширяет проекцию другого интерфейса, дает неправильный результат?

0 ответов

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