Hi Hongjin, We encountered a similar problem in another scenario, the only difference being that in our case, after merge, OpenJPA incorrectly concludes that a preexisting entity is new, at the time of commit, and errors out early. So instead of the PersistenceException you got, we get an ObjectExistsException. But the cause seems to be the same. We're looking into it.
Thanks for the analysis - it definitely helps. Dinkar 2008/10/15 Hong Jin Lu <[EMAIL PROTECTED]>: > > hi, folks: > > 1. My env is : WPS6.1, DB2 9.0, OpenJPA 1.2.0 > > 2. The followed is my persistence.xml configuration file: > <persistence-unit name="derby.ojpa"> > <provider> > org.apache.openjpa.persistence.PersistenceProviderImpl > </provider> > <jta-data-source>jdbc/jpa</jta-data-source> > <mapping-file>orm.xml</mapping-file> > <properties> > <property name="openjpa.TransactionMode" value="managed" > /> > <property name="openjpa.ConnectionFactoryMode" value= > "managed"/> > <property name="openjpa.jdbc.DBDictionary" value="db2"/> > <property name="openjpa.jdbc.EagerFetchMode" value="join" >></property> > <property name="openjpa.InverseManager" value="true"/> > <property name="openjpa.RetainState" value="true"/> > <property name="openjpa.AutoDetach" value="nontx-read"/> > <property name="openjpa.NontransactionalRead" value= > "false"/> > <property name="openjpa.NontransactionalWrite" value= > "false"/> > <property name="openjpa.ConnectionRetainMode" value= > "transaction"/> > </properties> > </persistence-unit> > > 3. I enable global transaction of SCA component , make sure tx is started, > and invokes several DAO operations in one of the SCA component operation > named "updateCaseStatus". > such as CaseMgmtImpl SCA component sequentially invokes DAO operations > > CaseStatus cStatus = statusDAO.findByCaseStatusPK(caseeStatus); > Casee casee = caseDAO.findByCaseePKWithRef(caseeId); > casee.setBusinessStatus(cStatus); > caseDAO.updateCasee(casee); > > In caseDAO.findByCaseePKWithRef : > em = emf.createEntityManager(); > em.joinTransaction(); > result = (Casee)em.find(Casee.class, caseID); > em.close(); > In statusDAO.findByCaseStatusPK : > em = emf.createEntityManager(); > em.joinTransaction(); > result = (CaseStatus)em.find(CaseStatus.class, statusCode); > em.close(); > > In caseDAO.updateCasee : > em = emf.createEntityManager(); > em.joinTransaction(); > Casee mergedcasee = em.merge(casee); > em.flush(); > em.close(); > > 4. Then at the end of the sca component updateCaseStatus method, such > errors throwed. > > com.ibm.sbs.cci.dao.DAOException: <openjpa-1.2.0-r422266:683325 fatal > general error> org.apache.openjpa.persistence.PersistenceException: DB2 SQL > error: SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;DB2ADMIN.CASEESQLCA > OUTPUT[Errp=SQLDMISR, Errd=-2146893819, 5, 0, 0, -957, 0] > DB2 SQL error: SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;DB2ADMIN.CASEE > FailedObject: prepstmnt 315232970 INSERT INTO DB2ADMIN.CASEE (CASEID, > CREATIONTIME, EFFECTIVEDATE, ENDDATE, EXPIRYDATE, > CASESTATUS_BUSINESSSTATUS, CASETYPE_CASETYPE) VALUES (?, ?, ?, ?, ?, ?, ?) > [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement] > at com.ibm.sbs.cci.dao.AbstractCaseeDAO.updateCasee( > AbstractCaseeDAO.java:104) > at com.ibm.sbs.cci.CaseMgmtImpl.updateCaseStatus( > CaseMgmtImpl.java:129) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:79) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:618) > at com.ibm.ws.sca.internal.java.handler.JavaReflectionAdapter$2.run( > JavaReflectionAdapter.java:152) > at java.security.AccessController.doPrivileged( > AccessController.java:197) > at com.ibm.ws.sca.internal.java.handler.JavaReflectionAdapter.invoke( > JavaReflectionAdapter.java:149) > at > com.ibm.ws.sca.internal.java.handler.JavaImplementationHandler.invokeSync( > JavaImplementationHandler.java:447) > at > com.ibm.ws.sca.internal.java.handler.JavaImplementationHandler.processMessage( > JavaImplementationHandler.java:195) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessageWithPCI( > MessageDispatcherImpl.java:714) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage( > MessageDispatcherImpl.java:1166) > at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process( > ManagedMessageImpl.java:821) > at > com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage( > ModuleSessionBean.java:338) > at > com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionRequiredActivitySessionNotSupported( > ModuleSessionBean.java:311) > at > com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionRequiredActivitySessionNotSupported( > EJSLocalStatelessModule_43132892.java:233) > at > com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionGlobalActivitySessionFalse( > UOWStrategyImpl.java:311) > at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage( > JoinUOWHandler.java:165) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessageWithPCI( > MessageDispatcherImpl.java:725) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage( > MessageDispatcherImpl.java:1166) > at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process( > ManagedMessageImpl.java:812) > at > com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processMessage( > ModuleSessionBean.java:149) > at > com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.processMessage( > EJSLocalStatelessModule_43132892.java:97) > at > com.ibm.wbit.comptest.controller.invocation.impl.AdhocInvoker.processMessage(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.Invoker.managedInvoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.Invoker.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.BaseInvocationHandler.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager.doInvoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager$1.run(Unknown > Source) > at java.security.AccessController.doPrivileged( > AccessController.java:219) > at javax.security.auth.Subject.doAs(Subject.java:495) > at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.BaseCommandHandler.doCommand(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.CommandProcessor.doCommand(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.CommandProcessor.doCommand(Unknown > Source) > at com.ibm.wbit.comptest.servlet.TestControllerServlet.process( > TestControllerServlet.java:76) > at com.ibm.wbit.comptest.servlet.TestControllerServlet.doPost( > TestControllerServlet.java:51) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) > at com.ibm.ws.webcontainer.servlet.ServletWrapper.service( > ServletWrapper.java:995) > at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest( > ServletWrapper.java:501) > at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest( > ServletWrapper.java:464) > at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest( > CacheServletWrapper.java:90) > at com.ibm.ws.webcontainer.WebContainer.handleRequest( > WebContainer.java:744) > at com.ibm.ws.wswebcontainer.WebContainer.handleRequest( > WebContainer.java:1455) > at com.ibm.ws.webcontainer.channel.WCChannelLink.ready( > WCChannelLink.java:113) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination( > HttpInboundLink.java:454) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation( > HttpInboundLink.java:383) > at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready( > HttpInboundLink.java:263) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators( > NewConnectionInitialReadCallback.java:214) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete( > NewConnectionInitialReadCallback.java:113) > at > com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted( > AioReadCompletionListener.java:165) > at com.ibm.io.async.AbstractAsyncFuture.invokeCallback( > AbstractAsyncFuture.java:217) > at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions( > AsyncChannelFuture.java:161) > at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) > at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) > at com.ibm.io.async.ResultHandler.runEventProcessingLoop( > ResultHandler.java:743) > at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) > at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469) > Caused by: <openjpa-1.2.0-r422266:683325 fatal general error> > org.apache.openjpa.persistence.PersistenceException: DB2 SQL error: > SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;DB2ADMIN.CASEESQLCA > OUTPUT[Errp=SQLDMISR, Errd=-2146893819, 5, 0, 0, -957, 0] > DB2 SQL error: SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;DB2ADMIN.CASEE > FailedObject: prepstmnt 315232970 INSERT INTO DB2ADMIN.CASEE (CASEID, > CREATIONTIME, EFFECTIVEDATE, ENDDATE, EXPIRYDATE, > CASESTATUS_BUSINESSSTATUS, CASETYPE_CASETYPE) VALUES (?, ?, ?, ?, ?, ?, ?) > [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement] > at org.apache.openjpa.jdbc.sql.DBDictionary.narrow( > DBDictionary.java:4238) > at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException( > DBDictionary.java:4203) > at org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException( > DB2Dictionary.java:503) > at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore( > SQLExceptions.java:102) > at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore( > SQLExceptions.java:72) > at > org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushBatch( > BatchingPreparedStatementManagerImpl.java:195) > at org.apache.openjpa.jdbc.kernel.MyUpdateManager.flush( > MyUpdateManager.java:357) > at org.apache.openjpa.jdbc.kernel.MyUpdateManager.flush( > MyUpdateManager.java:77) > at org.apache.openjpa.jdbc.kernel.MyUpdateManager.flush( > MyUpdateManager.java:60) > at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush( > JDBCStoreManager.java:655) > at org.apache.openjpa.kernel.DelegatingStoreManager.flush( > DelegatingStoreManager.java:130) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2010) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe( > BrokerImpl.java:1908) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1679) > at org.apache.openjpa.kernel.DelegatingBroker.flush( > DelegatingBroker.java:989) > at org.apache.openjpa.persistence.EntityManagerImpl.flush( > EntityManagerImpl.java:592) > at com.ibm.sbs.cci.dao.AbstractCaseeDAO.updateCasee( > AbstractCaseeDAO.java:98) > ... 60 more > Caused by: com.ibm.websphere.ce.cm.DuplicateKeyException: DB2 SQL error: > SQLCODE: -803, SQLSTATE: 23505, SQLERRMC: 1;DB2ADMIN.CASEE > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at sun.reflect.NativeConstructorAccessorImpl.newInstance( > NativeConstructorAccessorImpl.java:67) > at sun.reflect.DelegatingConstructorAccessorImpl.newInstance( > DelegatingConstructorAccessorImpl.java:45) > at java.lang.reflect.Constructor.newInstance(Constructor.java:522) > at > com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper( > GenericDataStoreHelper.java:523) > at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException( > GenericDataStoreHelper.java:578) > at com.ibm.ws.rsadapter.jdbc.WSJdbcUtil.mapException( > WSJdbcUtil.java:903) > at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate( > WSJdbcPreparedStatement.java:626) > at > org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate( > DelegatingPreparedStatement.java:269) > at > org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate( > LoggingConnectionDecorator.java:864) > at > org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate( > DelegatingPreparedStatement.java:269) > at > org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate( > JDBCStoreManager.java:1504) > at > org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate( > PreparedStatementManagerImpl.java:151) > at > org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushSingleRow( > BatchingPreparedStatementManagerImpl.java:217) > at > org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushBatch( > BatchingPreparedStatementManagerImpl.java:156) > ... 71 more > > [08-10-15 16:51:08:718 CST] 00000074 RegisteredSyn E WTRN0074E: 从 > before_completion 同步操作捕获异常:<openjpa-1.2.0-r422266:683325 nonfatal > user error> org.apache.openjpa.persistence.InvalidStateException: > Encountered unmanaged object in persistent field > "com.ibm.sbs.cci.pojo.Casee.businessStatus" during flush. However, this > field does not allow cascade persist. Set the cascade attribute for this > field to CascadeType.PERSIST or CascadeType.ALL (JPA annotations) or > "persist" or "all" (JPA orm.xml), or enable cascade-persist globally, or > manually persist the related field value prior to flushing. You cannot > flush unmanaged objects or graphs that have persistent associations to > unmanaged objects. > FailedObject: com.ibm.sbs.cci.pojo.CaseStatus-APPROVED > at org.apache.openjpa.kernel.SingleFieldManager.preFlushPC( > SingleFieldManager.java:753) > at org.apache.openjpa.kernel.SingleFieldManager.preFlush( > SingleFieldManager.java:594) > at org.apache.openjpa.kernel.SingleFieldManager.preFlush( > SingleFieldManager.java:562) > at org.apache.openjpa.kernel.SingleFieldManager.preFlush( > SingleFieldManager.java:478) > at org.apache.openjpa.kernel.StateManagerImpl.preFlush( > StateManagerImpl.java:2828) > at org.apache.openjpa.kernel.PDirtyState.beforeFlush( > PDirtyState.java:37) > at org.apache.openjpa.kernel.StateManagerImpl.beforeFlush( > StateManagerImpl.java:959) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1948) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe( > BrokerImpl.java:1908) > at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion( > BrokerImpl.java:1826) > at > org.apache.openjpa.ee.WASManagedRuntime$WASSynchronization.beforeCompletion( > WASManagedRuntime.java:304) > at > com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.beforeCompletion( > SynchronizationCallbackWrapper.java:65) > at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore( > RegisteredSyncs.java:242) > at com.ibm.ws.Transaction.JTA.TransactionImpl.prePrepare( > TransactionImpl.java:2398) > at com.ibm.ws.Transaction.JTA.TransactionImpl.stage1CommitProcessing( > TransactionImpl.java:1631) > at com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit( > TransactionImpl.java:1602) > at com.ibm.ws.Transaction.JTA.TransactionImpl.commit( > TransactionImpl.java:1537) > at com.ibm.ws.Transaction.JTA.TranManagerImpl.commit( > TranManagerImpl.java:239) > at com.ibm.ws.Transaction.JTA.TranManagerSet.commit( > TranManagerSet.java:163) > at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:756) > at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:181) > at com.ibm.ejs.csi.TransactionControlImpl.postInvoke( > TransactionControlImpl.java:581) > at com.ibm.ejs.container.EJSContainer.postInvoke( > EJSContainer.java:3910) > at > com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionRequiredActivitySessionNotSupported( > EJSLocalStatelessModule_43132892.java:244) > at > com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionGlobalActivitySessionFalse( > UOWStrategyImpl.java:311) > at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage( > JoinUOWHandler.java:165) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessageWithPCI( > MessageDispatcherImpl.java:725) > at > com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage( > MessageDispatcherImpl.java:1166) > at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process( > ManagedMessageImpl.java:812) > at > com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processMessage( > ModuleSessionBean.java:149) > at > com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.processMessage( > EJSLocalStatelessModule_43132892.java:97) > at > com.ibm.wbit.comptest.controller.invocation.impl.AdhocInvoker.processMessage(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.Invoker.managedInvoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.Invoker.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.BaseInvocationHandler.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager.doInvoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager$1.run(Unknown > Source) > at java.security.AccessController.doPrivileged( > AccessController.java:219) > at javax.security.auth.Subject.doAs(Subject.java:495) > at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118) > at > com.ibm.wbit.comptest.controller.invocation.impl.InvocationManager.invoke(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.BaseCommandHandler.doCommand(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.CommandProcessor.doCommand(Unknown > Source) > at > com.ibm.wbit.comptest.controller.command.impl.CommandProcessor.doCommand(Unknown > Source) > at com.ibm.wbit.comptest.servlet.TestControllerServlet.process( > TestControllerServlet.java:76) > at com.ibm.wbit.comptest.servlet.TestControllerServlet.doPost( > TestControllerServlet.java:51) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) > at com.ibm.ws.webcontainer.servlet.ServletWrapper.service( > ServletWrapper.java:995) > at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest( > ServletWrapper.java:501) > at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest( > ServletWrapper.java:464) > at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest( > CacheServletWrapper.java:90) > at com.ibm.ws.webcontainer.WebContainer.handleRequest( > WebContainer.java:744) > at com.ibm.ws.wswebcontainer.WebContainer.handleRequest( > WebContainer.java:1455) > at com.ibm.ws.webcontainer.channel.WCChannelLink.ready( > WCChannelLink.java:113) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination( > HttpInboundLink.java:454) > at > com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation( > HttpInboundLink.java:383) > at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready( > HttpInboundLink.java:263) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators( > NewConnectionInitialReadCallback.java:214) > at > com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete( > NewConnectionInitialReadCallback.java:113) > at > com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted( > AioReadCompletionListener.java:165) > at com.ibm.io.async.AbstractAsyncFuture.invokeCallback( > AbstractAsyncFuture.java:217) > at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions( > AsyncChannelFuture.java:161) > at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) > at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) > at com.ibm.io.async.ResultHandler.runEventProcessingLoop( > ResultHandler.java:743) > at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) > at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469) > > 5. According to my analysis, > > CaseStatus cStatus = statusDAO.findByCaseStatusPK(caseeStatus); --- > cStatus with StateManagerImpl & PNonTransState > Casee casee = caseDAO.findByCaseePKWithRef(caseeId); --- > casee with StateManagerImpl & PNonTransState > casee.setBusinessStatus(cStatus); --- > casee with StateManagerImpl & PDirtyState > caseDAO.updateCasee(casee); --- > in updateCasee method, casee(PDirtyTransState -> PNewState) > > em = emf.createEntityManager(); > em.joinTransaction(); > Casee mergedcasee = em.merge(casee); --- > casee with StateManagerImpl & PDirtyState > --- > mergedcasee with StateManagerImpl & PNewState > em.flush(); --- > Here, a record would be inserted into DB > em.close(); > > So anyone could help me out of this error? > > Hongjin Lu (鲁红金) > Developer, GCG Global Business Solution Centre (GBSC) - GBS Asset > [EMAIL PROTECTED] > Tel: +86 10 82454718, TieLine: 9152244 x 4718, Fax: +86-10-8245-2904 > E-mail: [EMAIL PROTECTED] > Address: 3/F DeShi Building, No. 9 ShangDi Dong Lu (East Road) Haidian > District Beijing, 100094 P.R. China