2012-08-31 22 views
0

我在嘗試合併其編號對應的數據存儲區實體已經匹配在HBase的實體時除外:Datanuclues合併在HBase的不工作(序列化(獨立)對象)

javax.persistence.PersistenceException: Object "[email protected]" being inserted has id "12653" yet an object with this id already exists in the datastore! 
     at org.datanucleus.api.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java:30 
2) 
     at org.datanucleus.api.jpa.JPAEntityManager.merge(JPAEntityManager.java:568) 
     at ai.ilikeplaces.util.cache.AbstractHCMapStore.store(AbstractHCMapStore.java:39) 
     at ai.ilikeplaces.logic.crud.hazelcast.HazelcastWallMapStore.store(HazelcastWallMapStore.java:20) 
     at com.hazelcast.impl.concurrentmap.MapStoreWrapper.store(MapStoreWrapper.java:110) 
     at com.hazelcast.impl.CMap$1.run(CMap.java:994) 
     at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:212) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
     at java.lang.Thread.run(Thread.java:679) 
Caused by: org.datanucleus.exceptions.NucleusUserException: Object "[email protected]" being inserted has id "12653" yet an object with this id already exists in the datastore! 
     at org.datanucleus.store.hbase.HBasePersistenceHandler.insertObject(HBasePersistenceHandler.java:129) 
     at org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:2371) 
     at org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:2347) 
     at org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:1798) 
     at org.datanucleus.ObjectManagerImpl.persistObjectWork(ObjectManagerImpl.java:1647) 
     at org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:1504) 
     at org.datanucleus.api.jpa.JPAEntityManager.merge(JPAEntityManager.java:564) 
     ... 8 more 

當試圖合併的實體。

與此相關的異常的代碼是:

 System.out.println("Attempting to store data:" + value); 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("adimpression_ilikeplaces_war_1.6-SNAPSHOTPU_DN"); 
     System.out.println("Obtained EntityManagerFactory."); 

     EntityManager em = emf.createEntityManager(); 
     System.out.println("Obtained EntityManager."); 

     em.getTransaction().begin(); 
     System.out.println("Began Transaction."); 

     em.merge(value); 

     System.out.println("Persisted data."); 

     em.getTransaction().commit(); 
     System.out.println("Committed Transaction"); 

其中

em.merge(value); 

是線39即AbstractHCMapStore.java:39。

我試圖合併的實體是一個新的實體,即使用java new關鍵字創建,並且以前不從數據庫中獲取。

任何幫助將不勝感激。

在此先感謝!

回答

1

設置datanucleus.allowAttachOfTransient =真的persistence.xml如果你想合併一個系列化對象