2015-01-23 3 views
0

Я пытаюсь протестировать DataNucleus JPAReplicationManager, но пока не работает.ClassCastException при использовании DataNucleus JPAReplicationManager

В моем пути к классам у меня есть:

antlr-2.7.7.jar 
datanucleus-api-jpa-4.1.0-m1.jar 
datanucleus-core-4.1.0-m1.jar 
dom4j-1.6.1.jar 
hibernate-commons-annotations-4.0.5.Final.jar 
hibernate-core-4.3.8.Final.jar 
hibernate-entitymanager-4.3.8.Final.jar 
hibernate-jpa-2.1-api-1.0.0.Final.jar 
jandex-1.1.0.Final.jar 
javassist-3.18.1-GA.jar 
jboss-logging-3.1.3.GA.jar 
jboss-logging-annotations-1.2.0.Beta1.jar 
jboss-transaction-api_1.2_spec-1.0.0.Final.jar 
mysql-connector-java-5.1.32-bin.jar 

Вот мой код:

EntityManagerFactory emf1 = master.getDbFactory(); 
EntityManagerFactory emf2 = slave.getDbFactory(); 

JPAReplicationManager replicator = new JPAReplicationManager(emf1, emf2); 
replicator.replicate(new Class[]{Terminal.class}); 

Ошибка:

Exception in thread "main" java.lang.ClassCastException: org.hibernate.internal.SessionImpl cannot be cast to org.datanucleus.ExecutionContext 
     at org.datanucleus.api.jpa.JPAReplicationManager.replicate(JPAReplicationManager.java:133) 
+1

Таким образом, очевидно, что одна единица персистентности управляется Hibernate, а другая единица персистентности управляется datanucleus? Исключение, похоже, хочет сказать вам, что это не поддерживается, скорее всего, обе единицы персистентности должны управляться datanucleus. – Gimby

ответ

1

Таким образом, вы использовать средства репликации DataNucleus, но пытаются использовать Hibernate EntityManagerFactory. Поскольку для репликации DataNucleus требуются особенности DataNucleus, оба EMF должны быть из DataNucleus

Смежные вопросы