Comment déclarer les entités à la volée?
Question
J'essaie de développer une application Java Plugin en utilisant le framework Java plug-in . Tous les plugins auront accès à une base de données en utilisant uniq JPA (avec EclipseLink).
Mais chaque plug-in aura-t-il propres entités.
Je ne pouvais pas déclarer toutes les entités dans un seul fichier persitence.xml dans le plug-in de base.
La question est: est-il possible de déclarer la classe entité à la volée lors de la déclaration du EntityManagerFactory? J'utilise déjà une carte pour obtenir la chaîne de connexion et l'utilisateur / mot de passe fichier de configuration utilisateur.
Y at-il un moyen de faire la même chose avec les entités?
Map<String, String> p = new HashMap<String, String>();
p.put("javax.persistence.jdbc.url", dns);
p.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
p.put("javax.persistence.jdbc.user", config.getProperty("com.cjrf.xbmo.db.username", ""));
p.put("javax.persistence.jdbc.password", config.getProperty("com.cjrf.xbmo.db.password", ""));
entityManagerFactory = Persistence.createEntityManagerFactory("mediamanager", p);
Merci pour votre aide.
La solution
Si votre seule préoccupation est pas faire déclarer les fichiers de classe dans le persistence.xml, vous pouvez utiliser détecter automatiquement fonctionalité.
Pour ajouter ce EclipseLink à persistence.xml
<exclude-unlisted-classes>false</exclude-unlisted-classes>
Maintenant toutes les annotations mappée avec @Entity
sera automatiquement numérisé.
Autres conseils
Cela pourrait aider: