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
файл, содержащий это:
jdbc/PostgresPool_test
model.MyThing
jdbc/MySQLPool_test
model.MyThing
Когда я делаю это, я получаю следующую ошибку:
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.
Но, если я включу только один из фразы (неНезависимо от того, какой из них), объект сохраняется в соответствующей базе данных - я просто могуt выяснить, как заставить его работать с обоими одновременно (без использования функциональности персистентности в дополнительных платформах).