Frage

Ich habe ein Projekt-Setup, in dem ich ein Modul habe, das im Ordner WEB-INF/lib der übergeordneten WAR-Datei vorhanden ist.Dieses Modul enthält eine persistence.xml und eine Entität, die geladen werden muss, wenn der JPA-Container während des Startvorgangs geladen wird.Irgendwie muss ich die Persistenzeinheiten des Krieges und des Lib-Jars zusammenführen.Die persistence.xml meines Krieges ist in WEB-INF/classes/META-INF vorhanden, daher würde sie WEB-INF/classes als Persistenzstamm verwenden und die Entität aus meinem Lib-JAR nicht verstehen.Das habe ich auf die harte Tour herausgefunden.

Ich bin auf mehrere Leute gestoßen, die Lösungen für dieses Problem vorgeschlagen haben

http://ancientprogramming.blogspot.com/2007/05/multiple-persistencexml-files-and.html Und ich habe auch herausgefunden, dass es das Data-jpa-Projekt von Spring gibt, das über einen MergingPersistenceUnitManager verfügt, der die Klassendefinitionen der Entitäten zusammenführt.

Hier ist meine Konfiguration

<bean id="pum" class="org.springframework.data.jpa.support.MergingPersistenceUnitManager">
  <property name="persistenceXmlLocations">
    <list>
     <value>classpath*:META-INF/persistence.xml</value>
    </list> 
  </property>
  <property name="defaultDataSource" ref="dataSource"></property>
</bean>


<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="LineManagement" />
    <property name="persistenceUnitManager" ref="pum"></property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false" />
            <property name="showSql" value="false" />
            <property name="databasePlatform" ref="cpsHibernateDialectClassName" />
        </bean>
    </property>

was nicht funktioniert.Es gibt mir einen Fehler java.lang.NoSuchMethodError:org.springframework.data.jpa.support.MergingPersistenceUnitManager.getPersistenceUnitInfo(Ljava/lang/String;)Lorg/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo;

Ich habe keine Ahnung, wie es zu diesem Fehler kommt.Nach meinem Verständnis erweitert der MergingPersistenceUnitManager den DefaultPersistenceManager.Ich vermute nur, dass es einen Konflikt geben könnte.

Hier sind meine Abhängigkeiten.spring-orm-3.0.2-RELEASE.jar und spring-data-jpa-1.0.3-RELEASE.jar.

Ich kann zur alten Programmierlösung zurückkehren, aber sollte es nicht einfach sofort funktionieren?

War es hilfreich?

Lösung

Sie haben nicht übereinstimmende Versionen von spring-orm und spring-data-jpa.Im Allgemeinen kann nicht garantiert werden, dass beliebige Versionen gut zusammenspielen.

MutablePersistenceUnitInfo getPersistenceUnitInfo – Die Methode fehlt im MergingPersistenceUnitManager (oder eigentlich in seiner Oberklasse DefaultPersistenceUnitManager) in Version 3.0.2.

In derselben Klasse in Version 3.0.5 finden Sie diese Methode: DefaultPersistenceUnitManager.java Auch Maven Pom für spring-data-jpa-1.0.3 listet die Abhängigkeit von spring-orm 3.0.5 auf.Also Ihr Problem wird durch die Verwendung von Sprin-Orm Version 3.0.5 gelöst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top