Aynı varlığı hem MySQL hem de Postgres veritabanlarına dayandırmaya çalışıyorum (bu, öncelikle tutarsızlıkları tanımlamak ve çift yazmayı yapan herhangi bir sorunun ayrıntılarını çalışmaktır. Buraya girdim. Bulduğum makaleler, ek çerçevelere dayanan tüm çözümleri açıkladı. Bunu, GlassAndroid 4.0'ı kullanıma hazır bir kutuda, JPA 2.1'i JPA sağlayıcısı olarak EclipseLink 2.5 ile çözmeye çalışıyorum. Eclipse kullanıyorum ve IDE'nin persistence.xml dosyasında birden çok kalıcılık birimini yapılandırmayı desteklemediğini fark ettim, bu yüzden bunun için doğrudan XML yazdım.persistence.xml
I (aynı yöntemle) kodunda böyle bir şey yapmak için bekliyordum: Bu içeren bir persistence.xml
dosyayı
@PersistenceContext(name = "MyAppMySQLPU")
EntityManager emMySQL;
@PersistenceContext(name = "MyAppPostgresPU")
EntityManager emPostgres;
//...etc...
MyThing thing = new MyThing();
//...etc...
emMySQL.persist(thing);
emPostgres.persist(thing);
ve kullanımı:
<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>
Bunu, ben Bensadece bir eklerseniz,
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.
Ama: aşağıdaki hatayı alıyorum 10 ifade (hangisi önemli değil), varlık ilişkili veritabanına kalıcı - Ben aynı anda hem de aynı anda çalışmak için nasıl elde edeceğini anlayamıyorum (ek çerçevelerde kalıcılığı işlevselliği kullanmadan).