2009-04-03 3 views
2

J'ai donc une application de printemps divisée en plusieurs modules, chacun dans un projet séparé. Chaque module dispose de ses propres entités JPA et j'utilise Spring ORM pour la configuration:Comment faire ressortir les classes JPA de plusieurs chemins?

<beans ...> 

<context:component-scan 
    base-package="org.myapp.module1.persistence" /> 

<context:component-scan 
    base-package="org.myapp.module2.persistence" /> 

... 

<context:annotation-config /> 

<tx:annotation-driven /> 

... 

</beans> 

Et le fichier persistence.xml ressemble à ceci:

<persistence ...> 

<persistence-unit name="myunit" /> 

</persistence> 

Mon problème est que lorsque le contexte du printemps initialise il ne recherchera que les classes @Entity sur le même chemin que le fichier persistence.xml et ignorera les autres classpaths des projets.

J'ai essayé d'avoir plusieurs persistence.xml, chacun dans le même chemin que les classes @Entity, mais dans ce cas, une fois que Spring trouve le premier fichier persistence.xml, il arrête le chargement et ne trouvera aucune classe @Entity sur les autres chemins.

Comment puis-je faire ressortir tout à Spring?

Répondre

4

Si vous voulez construire une seule unité de persistance de plusieurs fichiers persistence.xml vous pouvez utiliser le MergingPersistenceUnitManager disponible au printemps de données JPA. Assurez-vous de donner le même nom à toutes vos unités de persistance. Bien sûr, vous devez utiliser l'importation pour la persistence.xml des caractères génériques: classpath*:META-INF/persistence.xml

Cordialement, Ollie

+0

le lien est rompu. Lien mis à jour: http://redmine.synyx.org/projects/minos/repository/changes/trunk/modules/core/src/main/java/org/synyx/minos/support/jpa/MergingPersistenceUnitManager.java – rochb

+0

Merci pour l'indice, rok. Je l'ai corrigé... –

Questions connexes