使用 DataNucleus JPAReplicationManager 时出现 ClassCastException

ClassCastException when using DataNucleus JPAReplicationManager

我正在尝试测试 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)

因此您使用 DataNucleus 复制工具,但尝试使用 Hibernate EntityManagerFactory。由于 DataNucleus 复制需要 DataNucleus 的细节,所以两个 EMF 都应该来自 DataNucleus