-
Bug
-
Resolution: Obsolete
-
Major
-
JBossAS-4.0.4.GA
-
None
Cannot delete bean with compound primary key with CMR field in the process of cascade delete.
Two beans , one of them uses unknown primary key, another one uses compound primary key with CMR which references to the first one. When removing the first bean the following exception occures :
java.lang.IllegalStateException: New value [89] of a foreign key field beanOneID changed the value of a primary key field beanOneID[89].
Complete server log record:
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.LogInterceptor] Start method=remove
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Current transaction in MI is null
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TX_REQUIRED for remove timeout=0
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Thread came in with tx null
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Starting new tx TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] Begin invoke, key=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryPromotion, entry=key: 89, object: 84850, entry: 1c390b8
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Begin invoke, key=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] invoke called for ctx BeanOneEJB#89, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.BeanOneEJB] RESET PERSISTENCE CONTEXT: id=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] load data: entity=BeanOneEJB pk=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] No preload data found: entity=BeanOneEJB pk=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.BeanOneEJB] Default eager-load for entity: readahead=null
2006-07-05 14:44:09,638 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.BeanOneEJB] Executing SQL: SELECT className FROM BeanOneEJB WHERE (id=?)
2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanOneEJB#beanOneID param: i=1, type=INTEGER, value=89
2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanOneEJB#className result: i=1, type=java.lang.String, value=town
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] register, ctx=BeanOneEJB#89, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.BeanOneEJB.beanTwos] Read ahead cahce load: cmrField=beanTwos pk=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] load data: entity=BeanOneEJB pk=89
2006-07-05 14:44:09,638 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanOneEJB] No preload data found: entity=BeanOneEJB pk=89
2006-07-05 14:44:09,638 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCommand.BeanOneEJB] load relation SQL: SELECT id, attrName FROM BeanTwoEJB WHERE (id=?)
2006-07-05 14:44:09,638 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID param: i=1, type=INTEGER, value=89
2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID result: i=1, type=java.lang.Object, value=89
2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#attrName result: i=2, type=java.lang.String, value=name1
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add preload data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91 field=instance
2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#beanOneID result: i=1, type=java.lang.Object, value=89
2006-07-05 14:44:09,654 TRACE org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.BeanTwoEJB#attrName result: i=2, type=java.lang.String, value=name2
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add preload data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f92 field=instance
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Add finder results: entity=BeanTwoEJB results=[foo.BeanTwoPK@63d0f91, foo.BeanTwoPK@63d0f92] readahead=[JDBCReadAheadMetaData : strategy=on-load, pageSize=1000, eagerLoadGroup=*, left-join[]]
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor] invokerBInding is null in ProxyFactoryFinder
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LogInterceptor] Start method=<no method>
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Current transaction in MI is TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TX_SUPPORTS for <no method>
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Thread came in with tx TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] Begin invoke, key=foo.BeanTwoPK@63d0f91
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryPromotion, entry=key: foo.BeanTwoPK@63d0f91, object: 110b205, entry: 1178281
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Begin invoke, key=foo.BeanTwoPK@63d0f91
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityReentranceInterceptor] NON_ENTRANT invocation
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterceptor] invoke called for ctx BeanTwoEJB#foo.BeanTwoPK@63d0f91, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=lyamshin/23, BranchQual=, localId=23]
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.BeanTwoEJB] RESET PERSISTENCE CONTEXT: id=foo.BeanTwoPK@63d0f91
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] load data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.BeanTwoEJB] Preloading data: entity=BeanTwoEJB pk=foo.BeanTwoPK@63d0f91 cmrField=instance
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] entryRemoved, entry=key: null, object: null, entry: 1178281
2006-07-05 14:44:09,654 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Ending invoke, exceptionThrown, ctx=BeanTwoEJB#foo.BeanTwoPK@63d0f91
java.lang.IllegalStateException: New value [89] of a foreign key field beanOneID changed the value of a primary key field beanOneID[89]
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(JDBCCMP2xFieldBridge.java:204)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setForeignKey(JDBCCMRFieldBridge.java:1472)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1452)
at org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.load(ReadAheadCache.java:417)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:126)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:88)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:646)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:628)
at org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:406)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:252)
at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:243)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:126)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:276)
at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:104)
at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:68)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:378)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:520)
at org.jboss.ejb.Container.invoke(Container.java:954)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.invokeRemoveRelation(JDBCCMRFieldBridge.java:1226)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1041)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1027)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.destroyRelationLinks(JDBCCMRFieldBridge.java:1011)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.setInstanceValue(JDBCCMRFieldBridge.java:905)
at org.jboss.ejb.plugins.cmp.jdbc.CascadeDeleteStrategy$NoneCascadeDeleteStrategy.removedIds(CascadeDeleteStrategy.java:67)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.removeFromRelations(JDBCCMRFieldBridge.java:411)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.removeFromRelations(JDBCEntityBridge.java:322)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCRemoveEntityCommand.execute(JDBCRemoveEntityCommand.java:108)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.removeEntity(JDBCStoreManager.java:697)
at org.jboss.ejb.plugins.CMPPersistenceManager.removeEntity(CMPPersistenceManager.java:521)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.removeEntity(CachedConnectionInterceptor.java:314)
at org.jboss.ejb.EntityContainer.remove(EntityContainer.java:536)