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 <luhongj@cn.ibm.com>:
>
> 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
> Management@CDL
> Tel: +86 10 82454718, TieLine: 9152244 x 4718, Fax: +86-10-8245-2904
> E-mail: luhongj@cn.ibm.com
> Address: 3/F DeShi Building, No. 9 ShangDi Dong Lu (East Road) Haidian
> District Beijing, 100094 P.R. China
|