2012-03-17 2 views
0

은 6.1 WAS,이 예외를 얻을 :EntityManager의 병합 던지는 EntityExists 예외

Exception data: <openjpa-1.0.4-SNAPSHOT-r420667:955062 nonfatal store error> org.apache.openjpa.persistence.EntityExistsException: Attempt to persist detached object "[email protected]". If this is a new instance, make sure any versino and/or auto-generated primary key fields are null/default when persisting. 
FailedObject: [email protected]aa 
    at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2368) 
    at org.apache.openjpa.kernel.AttachStrategy.persist(AttachStrategy.java:94) 
    at org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:95) 
    at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:241) 
    at org.apache.openjpa.kernel.AttachStrategy.attachCollection(AttachStrategy.java:333) 
    at org.apache.openjpa.kernel.AttachStrategy.replaceCollection(AttachStrategy.java:301) 
    at org.apache.openjpa.kernel.AttachStrategy.attachField(AttachStrategy.java:220) 
    at org.apache.openjpa.kernel.VersionAttachStrategy.attach(VersionAttachStrategy.java:157) 
    at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:241) 
    at org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:101) 
    at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3161) 
    at org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1142) 
    at org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.java:665) 
    at com.ibm.ws.jpa.management.JPAExEmInvocation.merge(JPAExEmInvocation.java:335) 
    at com.ibm.ws.jpa.management.JPAEntityManager.merge(JPAEntityManager.java:123) 

내가 JPAEntityManager.java의 소스를 필요는 없습니다; 하지만 병합이 먼저 엔티티가 존재하는지 확인하기 위해 검사를 수행하기 때문에 EntityExistsException을 merge() 작업으로 처리 할 수 ​​없다고 생각했습니다. 그렇지 않은 경우 삽입하십시오. 예이면 업데이트하십시오. 여기에 무슨 문제가 있습니까?

+0

당신은 병합 방법은 EntityExistsException를 선언하지 않는 정확합니다. OpenJPA 런타임에서 잘못된 일이 발생하고 병합하려고하는 Entity가 업데이트가 아닌 새로운 것임을 정확히 감지합니다. ID 및 버전 속성의 미리보기를 게시 할 수 있습니까? 또한 시나리오에 대해 좀 더 자세히 설명하면 좋을 것입니다. 즉 : 당신이 합병하는 곳에서 Entity가 왔습니까? – Rick

+0

답장을 보내 주셔서 감사합니다. 나는 더 많은 것을 게시하려고 노력할 것이다. – Victor

답변

0

엔티티 관리자가 엔티티 존재 여부를 확인하는 방법을 확인하십시오. 캐시를 사용하고 있습니까? 또는 DB 쿼리를 사용하고 있는지 확인하십시오. 캐시를 통해 존재 확인이 수행되는 경우 일반적으로이 문제가 발생합니다.

당신은 EclipseLink를 JPA를 사용하는 경우는,이 ​​구성은 orm.xml에

감사를 유지, 아난드