persistence.xml pour de multiples unités de persistance

Je suis en train d'essayer de conserver le même entité à la fois MySQL et Postgres bases de données (c'est principalement pour identifier d'éventuelles incohérences, et les détails de tous les problèmes en faisant un double-écrire -- à qui j'ai pu croiser ici). Les articles que j'ai trouvé ont tous décrit les solutions basées sur d'autres cadres. Je suis en train de résoudre ce à l'aide de Glassfish 4.0 out-of-the-box, JPA 2.1 avec EclipseLink 2.5 en tant que fournisseur JPA. Je suis à l'aide d'Eclipse, et de réaliser que l'IDE ne prend pas en charge la configuration de plusieurs unités de persistance dans l'persistence.xml fichier, donc je suis en train d'écrire le fichier XML pour que directement.

Je m'attendais à voir quelque chose comme ceci dans le code (dans la même méthode):

@PersistenceContext(name = "MyAppMySQLPU")
EntityManager emMySQL;
@PersistenceContext(name = "MyAppPostgresPU")
EntityManager emPostgres;
//...etc...
MyThing thing = new MyThing();
//...etc...
emMySQL.persist(thing);
emPostgres.persist(thing);

et l'utilisation d'un persistence.xml fichier contenant ceci:

  <persistence-unit name="MyAppPostgresPU">
    <jta-data-source>jdbc/PostgresPool_test</jta-data-source>
    <class>model.MyThing</class>
  </persistence-unit>

  <persistence-unit name="MyAppMySQLPU">
    <jta-data-source>jdbc/MySQLPool_test</jta-data-source>
    <class>model.MyThing</class>
  </persistence-unit>

Quand je fais cela, j'obtiens l'erreur suivante:

SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SEVERE: Exception while preparing the app
SEVERE: Exception while preparing the app : Could not resolve a persistence unit corresponding to the persistence-context-ref-name [MyAppPostgresPU] in the scope of the module called [MyApp]. Please verify your application.

Mais, Si je comprend seulement l'un des <persistence-unit> phrases (n'importe laquelle), l'entité est conservée dans la base de données associée -- je ne peux pas comprendre comment le faire fonctionner avec les deux en même temps (sans en tirant parti de la persistance des fonctionnalités supplémentaires dans les cadres).

OriginalL'auteur CraftWeaver | 2013-08-16