How to transfer an object from one database to another using openjpa?

I am trying to transfer object objects from one database to another without success. Code example:

EntityManagerFactory emfFrom = Persistence.createEntityManagerFactory(fromPU);
EntityManager emFrom = emfFrom.createEntityManager();

EntityManagerFactory emfTo = Persistence.createEntityManagerFactory(toPU);
EntityManager emTo = emfTo.createEntityManager();

//Code to create sql for example 'select row from order row' where order is an entity

Query q = emFrom.createQuery(sql);
for(Object o: q.getResultList()) {
   emFrom.detach(o);
   emTo.persist(entity);
}

The result is:

"main" > org.apache.openjpa.persistence.EntityExistsException: "Order-1". , , / null/default . FailedObject: Order-1   at org.apache.openjpa.kernel.BrokerImpl.persistInternal(BrokerImpl.java:2628)   at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2571)   at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2554)    org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2458)   at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1077)   at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:716)

, . id null, ( ), :

Field f = o.getClass().getDeclaredField("id");
f.setAccessible(true);
f.set(o, null);

. null, . , .

java 7 openjpa 2.2. , , . .

+4
1

JPA, , , (, , ) ', , .

( , ), , JPA , .

, - . , JSON, .

Googles GSON:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.2.4</version>
</dependency>

:

final SomeEntity oldInstance = new SomeEntity("hello");
final Gson gson = new Gson();
final String json = gson.toJson(oldInstance);
final SomeEntity newInstance = gson.fromJson(json, oldInstance.getClass());

/ , JSON , - ,

0

Source: https://habr.com/ru/post/1536452/


All Articles