Ответ 1
У меня тоже такая же проблема. Я просто прокомментировал аннотацию @Repository в своих репозиториях данных Spring Data JPA, и все работает отлично, и IntelliJ IDEA также счастлив!
В нашем коде имеется несколько репозиториев Spring JPA, по одному для каждого из наших классов моделей. Они определяются как (где <Name>
- это имя нашего модального класса):
@Repository
public interface <Name>Repository implements JpaRepository<Name, Long> {
// …
}
Мы вносим их в наш beans с помощью аннотации @Inject
из javax
:
@Inject
public void set<Name>Repository(<Name>Repository <name>Repo) {
this.<name>Repo = <name>Repo;
}
private <Name>Repository <name>Repo;
Проблема заключается в том, что IntelliJ подчеркивает <name>Repo
в функции set<Name>Repository
как ошибку с текстом:
Не удалось автоподтвердить. Существует более одного типа bean типа "Репозиторий". Beans: Repo, Repo.
Это только проблема с проверкой. Компиляция и запуск нашего приложения прекрасно работает, но в попытке сделать проверки в IJ полезными, это большая проблема. У кого-нибудь есть предложения о том, как заставить IntelliJ вести себя?
Для справки, мы используем Hibernate в качестве нашего поставщика JPA, а источник данных настроен как в окнах инструментов Database and Persistence.
У меня тоже такая же проблема. Я просто прокомментировал аннотацию @Repository в своих репозиториях данных Spring Data JPA, и все работает отлично, и IntelliJ IDEA также счастлив!
Оказывается, у меня было два контекста, которые дважды собирали одни и те же классы в моем spring applicationContext.xml
:
<mongo:repositories base-package="com.example.persistence.repositories.*"/>
...
<context:component-scan base-package="com.example.persistence.repositories.*"/>
Удаление одной из этих строк устранило проблему.