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, поэтому мне не нужно переписывать код.
Почему использование проекции на основе интерфейса, которая расширяет проекцию другого интерфейса, дает неправильный результат?