persistence.xml для нескольких постоянных единиц
Я пытаюсь сохранить одну и ту же сущность в базах данных MySQL и Postgres (это в первую очередь для выявления любых несоответствий и выяснения деталей любых проблем, связанных с двойной записью - с которыми я столкнулся здесь). В статьях, которые я нашел, есть все описанные решения, которые зависят от дополнительных платформ. Я пытаюсь решить эту проблему с помощью Glassfish 4.0 из коробки, JPA 2.1 с EclipseLink 2.5 в качестве поставщика JPA. Я использую Eclipse и понимаю, что IDE не поддерживает настройку нескольких модулей персистентности в файле persistence.xml, поэтому я пишу XML для этого напрямую.
Я ожидал сделать что-то подобное в коде (в том же методе):
@PersistenceContext(name = "MyAppMySQLPU")
EntityManager emMySQL;
@PersistenceContext(name = "MyAppPostgresPU")
EntityManager emPostgres;
//...etc...
MyThing thing = new MyThing();
//...etc...
emMySQL.persist(thing);
emPostgres.persist(thing);
и использоватьpersistence.xml
файл, содержащий это:
<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>
Когда я делаю это, я получаю следующую ошибку:
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.
Но, если я включу только один из<persistence-unit>
Фразы (не имеет значения, какая), сущность сохраняется в связанной базе данных - я просто не могу понять, как заставить ее работать с обеими одновременно (без использования функции сохранения в дополнительных платформах).