Таким образом, я наконец смог решить проблему, избежав изменений в catashprohi c.
Шаг 1:
Создайте интерфейс, расширяющий основной компонент репозитория. из зависимого фляги и вашего требуемого метода запроса dsl. Этот репозиторий теперь имеет все методы dsl, которые ModelRepository
.
@Repository
public interface WrapperModelRepository extends ModelRepository{
List<Model> findByAnotherModelId(String id);
}
Шаг 2: . Теперь наша работа была закончена, если в ModelRepository
не было пользовательских методов запросов. Но мы должны поддерживать пользовательский метод запроса, определенный в CustomModelRepository
. Если мы этого не сделаем, то наш репозиторий-оболочка прервется при запуске bean-компонента, поскольку он не сможет найти имплементацию пользовательского метода запроса, определенного в CustomModelRepositoryImpl
. Поэтому для этого нам нужно создать еще один класс Impl для хранилища-обертки, который может просто обернуть реализацию пользовательского метода запроса.
@Component
public class WrapperModelRepositoryImpl implments WrapperModelRepository {
private CustomModelRepositoryImpl customModelRepository;
public WrapperModelRepositoryImpl(CustomModelRepositoryImpl repository){
this.customModelRepository = repository;
}
public Model exactQueryMethodNameDeclaredInCustomModelRepository(){
return customModelRepository.exactQueryMethodNameDeclaredInCustomModelRepository()
}
}
Теперь наш обязательный компонент создается, если вы не забудете упомянуть об этом ( ваш текущий пакет реализации оболочки), в ваших @EnableJpaRepositories
репозиториях, для Spring, чтобы создавать репозитории для вас.