Я не очень люблю Spring Data JPA , и у меня возникает следующая проблема при работе с Spring Boot проектом.
У меня есть следующие архитектурные сомнения по поводу того, как правильно обрабатывать подобные ситуации:
У меня есть репозиторий, реализованный с помощью такого интерфейса, в котором я определяю свои «методы запроса»:
public interface ExcelRepository extends CrudRepository<Country, Integer> {
public List<Country> findAllByOrderByCountryNameAsc();
public List<BlockAttackDetail> findAllByOrderByAttackTypeAcronymAsc();
}
Как видите, я расширяю интерфейс CrudRepository , и я указал один класс модели с именем ** Country *, отображающий таблицу спецификаций c в моей базе данных.
Я добавил второй метод, работающий с другим классом сущностей ( BlockAttackDetail ), отображающий другую таблицу базы данных.
Поэтому, запуская мое приложение, я получаю эту ошибку, поскольку этот репозиторий предназначен только для Таблица базы данных, отображаемая классом сущностей Страна :
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property attackTypeAcronym found for type Country!
Моя проблема заключается в следующем: нужно ли мне создавать несколько интерфейсов репозиториев JPA (по одному для каждой сущности) или существовать способ иметь один Интерфейс репозитория JPA, работающий с несколькими классами сущностей?
В моем конкретном случае c у меня будет несколько методов, которые будут взаимодействовать с указанной c таблицей базы данных (с сущностью), и у меня есть один интерфейс хранилища, обрабатывающий несколько классов сущностей (чтобы избежать путаницы).
Могу ли я сделать это каким-то образом? И если я могу сделать это, имеет смысл с архитектурной точки зрения или лучше иметь специфический c интерфейс репозитория JPA для каждого класса сущностей?