Details
-
Bug
-
Status: Open
-
Critical
-
Resolution: Unresolved
-
1.2.0
-
None
-
None
-
WPS6.1, DB2 9.0, OpenJPA 1.2.0, JDK 5 (IBM JVM)
Description
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();