Est-il possible d'avoir persistence.xml dans un emplacement autre que META-INF?
Je veux avoir mon persistence.xml dans le dossier conf de mon application. Comment puis-je savoir la Persistance.createEntityManagerFactory qu'il faut lire à partir de là?
source d'informationauteur Evgeniy Dorofeev | 2012-12-05
Vous devez vous connecter pour publier un commentaire.
La createEntityManagerFactory méthodes de recherche pour persistence.xml les fichiers dans le répertoire META-INF de tout élément CLASSPATH.
si votre CLASSPATH contient le répertoire conf, vous pouvez placer un EntityManagerFactory définition dans conf/META-INF/persistence.xml
Si vous utilisez EclipseLink vous pouvez définir le persistence.xml emplacement avec l'unité de persistance de la propriété, "eclipselink.persistencexml".
Cette solution a fonctionné pour moi
Le chargeur de classe peut être un URLClassLoader, alors essayez de cette façon:
Il devrait fonctionner. Fonctionne pour moi sous certaines test etc conditions.
Merci c'est un hack et ne doit pas être utilisée en production.
Ma solution est pour EclipseLink 2.7.0 et Java 9 et il est modifié et détaillé de la version de @Evgeniy Dorofeev réponse.
Dans
org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor
surline 236
nous voyons le code suivant:Ce code est utilisé par EclipseLink pour calculer l'url de la racine de la persistence.xml chemin d'accès. C'est très important car chemin final sera fait par l'ajout
descriptorPath
àpuRootUrl
.Donc, supposons que nous avons un fichier sur
/home/Smith/program/some-folder/persistence.xml
alors nous avons:Détails:
eclipselink.persistencexml
. Si nous ne le faisons pas par défaut descriptorPath sera égal àMETA-INF/persistence.xml
et nous devons garder notre persistence.xml sur/home/Smith/program/META-INF/persistence.xml
être trouvé.