Ich habe versucht, Spring Data zum ersten Mal einzurichten und zu verwenden. Natürlich möchten Sie die neueste Version (Spring Data JPA 1.4.3.RELEASE & amp; Hibernate 4.3.0.Final) verwenden. Nach der Konfiguration gemäß den Beispielen online, hat die Anwendung eine Ausnahme ausgelöst.
%Vor%Dies war die Fehler / Ausnahme:
%Vor%Ich konnte es einfach nicht schaffen, dass diese Konfiguration funktioniert. Die einzige Problemumgehung, die ich gefunden habe, war, Hibernate auf Version 4.2.8.Final
zurückzusetzenIhr Klassenpfad enthält offenbar sowohl die JPA 2.0- als auch die JPA 2.1-JAR, wobei die erstere zuerst gefunden wird und somit Hiberate fehlschlägt. Aus den aufgelisteten Abhängigkeitsdeklarationen ist nicht klar, warum Spring Data JPA 1.4.3 sie definitiv nicht aufruft.
Ich würde also empfehlen, mvn dependency:tree
auszuprobieren und nach der JPA 2.0 JAR zu suchen, die tatsächlich transitiv davon abhängt (vielleicht hast du es sogar lokal deklariert). Falls Sie immer noch dabei sind, können Sie die Ausgabe des Maven-Befehls zu Ihrer Frage hinzufügen.
Wenn Sie den Jboss-Webserver verwenden, möchten Sie den Hibernate-jpa-2.0-API von pom.xml ausschließen, zum Beispiel:
%Vor% Fügen Sie hibernate-jpa-2.1-api
dependency zu Ihrer pom.xml hinzu, zum Beispiel:
Abschließender Hinweis: Lesen Sie den Stacktrace, Ihre Abfrage verursacht den Fehler nicht, er wird verursacht, wenn EntityManagerFactory
erstellt wird, da einige Ihrer Entitäten diese Eigenschaft in einer Annotation @Table
verwenden. Löschen Sie entweder die Verwendung der Eigenschaft oder verschieben Sie Ihre Bibliotheken nach JPA 2.1.
Außerdem müssen Sie das jpa-Subsystem von JBoss ausschließen, und Sie möchten Folgendes tun:
Schließen Sie das jpa Subsystem aus: hier ist ein vollständiges Beispiel
%Vor%-Genießen Sie!
Wenn Sie Eclipse verwenden, können Sie die Datei pom.xml in Eclipse öffnen und zur Registerkarte Abhängigkeitshierarchie navigieren, um zu überprüfen, welches jar als transitive Abhängigkeit ausgewählt wurde und welches von Ihnen konfiguriert wurde. Sie müssten diejenige auswählen, die die transitive Abhängigkeit ist, und die aktuell angegebene Abhängigkeit entfernen / OR / Sie müssten die transitive Abhängigkeit ausschließen.
Wir hatten das gleiche Problem. Wir haben eine Web-App mit Spring und Hibernate 4.3.10.FINAL mit JBoss 7.1.3. Der Hibernate kommt mit JPA 2.1 und der JBoss mit JPA 2.0. Die beiden waren beim Bereitstellen der App in Konflikt. Sie haben viele Lösungen. Wie von anderen gesagt, können Sie die gewünschte Version von hibernate-jpa jar in das jboss-Modul modules (jboss / modules / javax / persistence / api / main) stellen und die modules.xml mit der guten Version aktualisieren. Eine andere Lösung (diejenige, die wir gewählt haben) besteht darin, zu verhindern, dass die Jboss JPA implizit von JBoss geladen wird, wenn sie bereitgestellt wird. In diesem Fall müssen Sie in Ihrem WEB-INF-Ordner eine Datei namens jboss-deployment-structure.xml erstellen. Fügen Sie die folgenden Ausschlüsse hinzu:
%Vor%Nachdem dieselben Probleme mit JBoss EAP 6.4, JPA 2.1, Spring Boot 1.4.1, Spring Data 1.10.3, Hibernate 5.0.11 aufgetreten sind, ist dies die Lösung, die für mich funktioniert hat:
/WEB-INF/jboss-deployment-structure.xml
%Vor%Lob an Ahmads Antwort, nur Ausschluss für org.jboss.logging hinzugefügt
Tags und Links java jpa spring-data-jpa spring spring-data