2012-03-17 8 views
0

を投げマージ6.1 WAS、私はEntityManamger.merge(OBJ)を呼び出すしようとすると、私はこの例外を取得:のEntityManagerが上に展開私のEJBプロジェクトで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のソースを持っていません。私は、Mergeが最初にエンティティが存在するかどうかを確認するため、merge()操作でEntityExistsExceptionをスローできないと考えました。そうでない場合は、挿入します。はいの場合は、更新してください。 ここで何がうまくいかないのですか?

+0

を維持しています。私は、OpenJPAランタイムで何か悪いことが起こっていると思われ、マージしようとしているエンティティがアップデートではなく新しいものであることを間違って検出しています。 IdとVersion属性のスニペットを投稿できますか?また、シナリオの説明を少し良くするといいでしょう。すなわち、エンティティはあなたがマージしているところから来たのですか? – Rick

+0

ご返信ありがとうございます。私はもっ​​とポストしようとします。 – Victor

答えて

0

エンティティマネージャがエンティティの存在を確認する方法を確認してください。それはキャッシュを使用していますか?またはDBクエリを使用しています。この問題は、存在チェックがキャッシュを介して行われる場合に、通常発生します。

あなたがでEclipseLink JPAを使用している場合、この設定は、あなたがマージ方法がEntityExistsExceptionを宣言していないことを正しいorm.xmlで

おかげで、 アナンド

関連する問題