web-dev-qa-db-de.com

Spring Boot JPA CrudRepository

Ich arbeite mit Spring Boot + Spring Data JPA und stehe vor diesem Problem, wenn ich versuche, eine Klasse einzufügen, die CrudRepository erweitert:

Verursacht durch: org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'topicRepository': Übereinstimmender Konstruktor Konnte nicht aufgelöst werden (Hinweis: Geben Sie für einfache Parameter zur Vermeidung von Mehrdeutigkeiten

Repository-Klasse:

public interface TopicRepository extends CrudRepository<Topic, Integer> {}

Serviceklasse:

@Service
public class TopicService {

      @Autowired
      private TopicRepository topicRepository;
}

Irgendwelche Vorschläge?

8
A.Chakroun

Ich hatte das gleiche Problem und habe es durch den Wechsel der Spring Boot-Version behoben. Das Ändern der JPA-Versionen von Spring Data hat nichts bewirkt (dies ist der Ort, an dem der Fehler angenommen wurde). Ich denke, es gibt einen Fehler in der Spring Boot-Version 1.5.1. Ich habe wieder auf Version 1.4.3 gewechselt und der Fehler war weg. Ich habe keine nachfolgenden/anderen Versionen ausprobiert, so dass Sie möglicherweise nur mit Ihren Abhängigkeiten und deren Versionen experimentieren müssen.

Für den Datensatz können Sie Ihre Serviceklasse mit @Repository kommentieren lassen. Es sollte keinen Unterschied machen. Ich habe diese Apps auf dieselbe Weise mit dem Service/Dao-Muster eingerichtet, und die Anmerkungen waren noch nie so wählerisch. Hoffentlich kann dies anderen helfen, deren Spring Boot-Entwicklungsablauf plötzlich einen Fehler auslöst!

9
Trevor Bye

Welche Versionen von Spring Data Commons und Spring Data Jpa verwenden Sie? Ich bin gerade mit spring-data-commons 1.13.x mit spring-data-jpa 1.10.x darauf gestoßen. Das Aktualisieren von spring-data-jpa auf 1.11.x hat das Problem für mich behoben.

4
Andy Sampson

Hatte das gleiche Problem am 1.5.2. Ein Upgrade auf 1.5.5 hat das Problem behoben.

0
dzirtbry

Ich hatte das gleiche Problem, nachdem ich Spring Boot auf 1.5.4 aktualisiert hatte. 

Ich benutze auch spring-data-envers, das in Version 1.0.4 war. Ein Upgrade auf 1.4.1 hat das Problem behoben.

Ich hoffe es hilft jemandem :)

0
r4phG

Sie können Applicationcontext verwenden, um das Repository in dieses Referenz-TopicRepository einzufügen. Sie deklarieren den Applicationcontext nur in der @ rest-Controller-Klasse. Dann übergeben Sie dies an die Serviceklasse, die Parms durch Konstruktor nehmen soll. Ex- public TopicService(Applicationcontext ctx) {this.topicRepository =context.getBean(TopicRepository.class); }

0
Mohan kumar

Stelle sicher:

1) TopicRepository wird mit @Repository kommentiert.

2) Sie haben die Scan-Pakete konfiguriert:

<jpa:repositories base-package="mypkg.repositories"></jpa:repositories>
0
Maciej Kowalski