Eclipselink & Spring Daten

9

Ich versuche eine Lösung mit einer Kombination aus eclipselink (2.4.0) und spring-data-jpa (1.1.0.RELEASE) zu implementieren. Bei jeder Bereitstellung der Lösung (Tomcat 7) erhalte ich jedoch die folgende Ausnahme:

%Vor%

Dies tritt auf, wenn das Repository-Autowiring stattfindet (Codebeispiele unten):

Serviceklasse

%Vor%

Entitätsklasse

%Vor%

persistence.xml

%Vor%

Kann dies an einem Konflikt zwischen Frühling und Eklipselink liegen?

UPDATE:

Stacktrace ...

%Vor%     
NubieJ 30.07.2012, 14:07
quelle

4 Antworten

1

Ich war in der Lage, mein Problem zu lösen, aber es war ein anderes Setup als das obige, ich füge nur ein paar Dinge hinzu, über die ich gestolpert bin, bis ich es in meiner SE-Umgebung lösen konnte:

  • Bug Ссылка wirkt sich auf EclipseLink-Versionen ab Version 2.2.0 aus. Meistens in der lokalen Umgebung (RESOURCE_LOCAL). Ein EclipseLink Version-Upgrade oder die folgende Problemumgehung kann helfen:
%Vor%
  • Mehrere persistence.xml-Dateien im Klassenpfad (z. B. speziell in JARs der 3. Partei), die alle den gleichen Persistenz-Einheitsnamen definieren (oberhalb von "Standard" kann sehr häufig vorkommen). Versuchen Sie in diesem Fall, den Namen der Persistenzeinheit als ersten Schritt umzubenennen.

  • Wenn der Name der persistence-unit umbenannt wird, aber wenn er auf den alten Wert zurückgesetzt wird, gibt es entweder die oben erwähnte JAR-Datei der dritten Partei oder alte JAR-Dateien Ihres eigenen Projekts (z Refactoring / Umbenennung auf Projektebene oder ähnliches änderte die Struktur, so dass zum Beispiel ein Maven-Build noch alte Build-Artefakte aus dem Repository aufnehmen konnte)

Endlich, wenn es um meine Einrichtung geht (Spring-Standalone-Anwendung, keine persistence.xml, aber viele Spring-Konfigurationen, weil ein benutzerdefiniertes Firmaframework verwendet wird), habe ich vergessen, das Entity-Paket der Custom hinzuzufügen Framework-Core, wenn ich eine ihrer Service-Implementierungen (Spring-Bean-Implementierung) in meinem lokalen Projekt ausführen wollte, anstatt ihre Service-Implementierung aus einer JAR-Abhängigkeit zu machen. Stellen Sie also sicher, dass Sie alle erforderlichen Entity-Pakete für Ihre EntityManagerFactory aufgelistet haben:

%Vor%

In meinem Fall habe ich vergessen, den Model-Paket mit den verwendeten Entitäten eines anderen Bereichs (der den Custom-Framework-Core schreibt) unserer Firma hinzuzufügen.

Viel Glück, dieser Fehler ist ein Biest: /

    
JBA 12.03.2014 13:03
quelle
0

Ich bin mir nicht sicher, ob Sie das gleiche Problem haben, das ich hatte: Ich versuche, zwei verschiedene Entity-Factories zu erstellen ... Die Ausnahme ist die gleiche, also wird das vielleicht helfen. Im Wesentlichen trat diese Ausnahme auf, als sie eine Entity in der falschen EntityManagerFactory instanziierte.

Mein Projekt lief mit einer einzelnen Datenbankverbindung einwandfrei, aber als ich eine zweite hinzufügte, war EclipseLink verwirrt darüber, wo meine Entitäten instanziiert werden sollten. Nach ein paar Debugging war meine Schlussfolgerung, die Eigenschaft "packagesToScan" aus meiner root-context.xml zu entfernen und sie durch eine "persistenceXmlLocation" zu ersetzen. In dieser XML-Datei listete ich alle Klassen auf, die ich durchsuchen musste, und schloss alles andere mit "& lt; exclude-unlisted-classes & gt;" aus.

Hier ist meine vollständige XML-Konfiguration, die derzeit funktioniert:

root-context.xml

%Vor%

persistence1.xml

%Vor%

persistence2.xml

%Vor%

Also, das funktioniert für mich ...

Scheinbar die Angabe jedes "persistence.xml" -Standorts verhindert, dass Klassen, die für eine andere EntityManagerFactory gedacht sind, auf der ersten "emf" instanziiert werden. In der Tat sieht das wie ein Fehler Ссылка aus. Alles, was ich aus meinem Debugging herausfinden konnte, ist, dass ohne die "persistenceXmlLocation" ALLE Klassen, die mit "packageScan" gefunden wurden, auf der ersten erstellten "emf" instanziiert wurden, die zweite "emf" wurde komplett ignoriert.

Hoffe, das hilft. Viel Glück!

    
M. Trojahn 02.08.2014 13:58
quelle
0

Fügen Sie das Paket ( com.acme.domain.entities ) mit Entitäten zu packagesToScan hinzu.

    
Ati 31.05.2016 09:28
quelle
0

Setzen Sie PersistenceUnitName anstelle von persistenceXmlLocation

Keine persistence.xml benötigt.

%Vor%     
Vijay Anand Mareddy 14.06.2016 20:34
quelle

Tags und Links