Я сделал весенний загрузочный проект для доступа к моим данным.
Мой основной класс это Patient.java:
@Entity
public class Patient {
private Long id;
private String numeroSs;
private String profession;
// lot of stuff...., getters, setters, ...
}
Чтобы улучшить свои запросы, я сделал очень простую проекцию моего класса «Пациент». Я назвал эту проекцию PatientCustom:
public interface PatientCustom {
String getNumeroSs();
Timestamp getDateProchainRdv();
}
И в моем репозитории PatientRepo.java я создал два пользовательских метода:
@Transactional
@RepositoryRestResource(collectionResourceRel = "patient", path = "patient")
public interface PatientRepo extends JpaRepository<Patient, Long> {
PatientCustom findOneByNumeroSs(String numeroSs);
Collection<PatientCustom> findByNumeroSs(String numeroSs);
}
Когда я использую первый метод, нет проблем: он возвращает PatientCustom:
{
numeroSs: "150505617017002",
dateProchainRdv: null
}
Но когда я хочу получить список или коллекцию, он отправляет мне сообщение об ошибке:
{
cause: null,
message: "Couldn't find PersistentEntity for type class com.sun.proxy.$Proxy165!"
}
И следы в моем терминале:
2019-03-12 10:32:34.671 ERROR 2072 --- [nio-8090-exec-2] o.s.d.r.w.RepositoryRestExceptionHandler : Couldn't find PersistentEntity for type class com.sun.proxy.$Proxy165!
java.lang.IllegalArgumentException: Couldn't find PersistentEntity for type class com.sun.proxy.$Proxy165!
at org.springframework.data.mapping.context.PersistentEntities.lambda$getRequiredPersistentEntity$2(PersistentEntities.java:96) ~[spring-data-commons-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at java.util.Optional.orElseThrow(Optional.java:290) ~[na:1.8.0_181]
at org.springframework.data.mapping.context.PersistentEntities.getRequiredPersistentEntity(PersistentEntities.java:95) ~[spring-data-commons-2.1.5.RELEASE.jar:2.1.5.RELEASE]
Я очень хорошо понимаю, что Spring хочет добавить прокси-класс в мой интерфейс, но когда он хочет добавить этот прокси в список или коллекцию, он несчастен, потому что список и коллекция не являются интерфейсами, а являются классами.
Что я могу сделать, чтобы решить эту проблему?