PrimaryKeyJoinColumn and referencedColumnName support in ENVERS 3.6.8?
mohanakartikmasilamani May 31, 2013 7:37 PMWe are using validityauditstrategy so when any insert happens for Margin entity below we expect envers to create historical versions for the same in B_HISTORY and then A_HISTORY and then refer the same in MARGIN_HISTORY.
But we are getting the following exception.
Is this model supported by envers in 3.6.8 which is the version we are using ,Or is our annotations correct.
Entity mragin has a ManytoOne association with A
Entity A shares primary key from B.
Thanks
@Entity
@Table(name="MARGIN")
@Cacheable
@Audited
public class Margin extends com.tms.framework.data.jpa.GenericBaseEntity<Long> implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator="MARGINID_GENERATOR")
@GenericGenerator(name = "MARGINID_GENERATOR", strategy = "com.tms.vsc.data.util.DataSequenceGenerator",parameters={
@Parameter(name="sequence_name",value=" MARGIN_SEQ"),
@Parameter(name="value_column",value="id"),
})
@Column(name="MARGIN_ID")
private Long id;
//bi-directional many-to-one association
@BusinessKey
@ManyToOne
@JoinColumn(name="A_GROUP_ID")
private A a;
}
@Entity
@Table(name="A_SERIES")
@PrimaryKeyJoinColumn(name="A_GROUP_ID", referencedColumnName="B_GROUP_ID")
@DiscriminatorValue(value = "1")
@Cacheable
@Audited
public class A extends B implements Serializable {
private static final long serialVersionUID = 1L;
//bi-directional many-to-one association
@OneToMany(mappedBy="A")
private List<Margin> margins;
//bi-directional many-to-one association
@OneToMany(mappedBy="A")
private List<Charge> charges;
}
@Entity
@Table(name="B_GROUP")
@DiscriminatorColumn(name="B_GROUP_ID", discriminatorType=DiscriminatorType.INTEGER)
@Inheritance(strategy = InheritanceType.JOINED)
@Cacheable
@Audited
public abstract class B extends com.tms.framework.data.jpa.GenericBaseEntity<Long> implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator=" GROUPID_GENERATOR")
@GenericGenerator(name = " GROUPID_GENERATOR", strategy = "com.tms.vsc.data.util.DataSequenceGenerator",parameters={
@Parameter(name="sequence_name",value=" GROUP_SEQ"),
@Parameter(name="value_column",value="id"),
})
@Column(name="B_GROUP_ID")
private Long id;
insert
into
B_HISTORY
(REVTYPE, REV_END, SYS_END_TS, B_CD, B_DESC, B_EFF_DT, B_EXP_DT,B_NM, SYS_ACTION_CONTEXT_TXT, SYS_TYPE, SYS_ID, SYS_ROLE_NM, SYS_VERSION_NO, SYS_START_TS, ROLE_ID, TYPE_ID, B_GROUP_ID, REV_START)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
10:58:11.517 DEBUG org.hibernate.jdbc.AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
10:58:11.517 DEBUG org.hibernate.jdbc.ConnectionManager:295 - skipping aggressive-release due to flush cycle
10:58:11.535 DEBUG org.hibernate.util.JDBCExceptionReporter:225 - could not insert: [com.x.x.x.domain.A_HISTORY] [insert into B_HISTORY (REVTYPE, REV_END, SYS_END_TS, B_CD, B_DESC, B_EFF_DT, B_EXP_DT,B_NM, SYS_ACTION_CONTEXT_TXT, SYS_TYPE, SYS_ID, SYS_ROLE_NM, SYS_VERSION_NO, SYS_START_TS, ROLE_ID, TYPE_ID, B_GROUP_ID, REV_START) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setLongInternal(OraclePreparedStatement.java:4901) ~[ojdbc6.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.setLong(OraclePreparedStatement.java:4888) ~[ojdbc6.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setLong(OraclePreparedStatementWrapper.java:206) ~[ojdbc6.jar:11.2.0.2.0]
at weblogic.jdbc.wrapper.PreparedStatement.setLong(PreparedStatement.java:778) ~[com.bea.core.datasource6_1.9.0.0.jar:1.9.0.0]
at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:52) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:130) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.ComponentType.nullSafeSet(ComponentType.java:317) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2195) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2430) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2874) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.envers.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:158) [hibernate-envers-3.6.8.1.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:543) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.beforeTransactionCompletion(ActionQueue.java:216) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.impl.SessionImpl.beforeTransactionCompletion(SessionImpl.java:571) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(JDBCContext.java:250) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.transaction.synchronization.CallbackCoordinator.beforeCompletion(CallbackCoordinator.java:125) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.transaction.synchronization.HibernateSynchronizationImpl.beforeCompletion(HibernateSynchronizationImpl.java:51) [hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1239) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1214) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:116) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1316) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2132) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:272) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:239) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:299) [com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009) [spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) [spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) [spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:257) [spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) [spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:952) [spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61) [spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183) [weblogic.jar:10.3.4.0]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) [com.bea.core.weblogic.workmanager_1.9.0.0.jar:1.9.0.0]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176) [com.bea.core.weblogic.workmanager_1.9.0.0.jar:1.9.0.0]
10:58:11.536 WARN org.hibernate.util.JDBCExceptionReporter:233 - SQL Error: 17003, SQLState: 99999
10:58:11.539 ERROR org.hibernate.util.JDBCExceptionReporter:234 - Invalid column index
10:58:11.550 DEBUG org.hibernate.jdbc.ConnectionManager:427 - aggressively releasing JDBC connection
10:58:11.551 DEBUG org.hibernate.jdbc.ConnectionManager:464 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
10:58:11.689 WARN org.hibernate.ejb.EntityManagerImpl:138 - Entity Manager closed by someone else (hibernate.transaction.auto_close_session must not be used)
- trying to recover. Cause: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is weblogic.transaction.RollbackException: Unexpected exception in beforeCompletion: sync=org.hibernate.transaction.synchronization.HibernateSynchronizationImpl@1062360
could not insert: [com.x.x.x.domain.A_HISTORY]
org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is weblogic.transaction.RollbackException: Unexpected exception in beforeCompletion: sync=org.hibernate.transaction.synchronization.HibernateSynchronizationImpl@1062360
could not insert: [com.x.x.x.x.A_HISTORY]
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1012) ~[spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) ~[spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) ~[spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:257) ~[spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) ~[spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:952) ~[spring-jms-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.scheduling.commonj.DelegatingWork.run(DelegatingWork.java:61) [spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183) [weblogic.jar:10.3.4.0]
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) [com.bea.core.weblogic.workmanager_1.9.0.0.jar:1.9.0.0]
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176) [com.bea.core.weblogic.workmanager_1.9.0.0.jar:1.9.0.0]
Caused by: weblogic.transaction.RollbackException: Unexpected exception in beforeCompletion: sync=org.hibernate.transaction.synchronization.HibernateSynchronizationImpl@1062360
could not insert: [com.x.x.x.x.A_HISTORY]
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1881) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:345) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:239) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.TransactionManagerImpl.commit(TransactionManagerImpl.java:299) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1009) ~[spring-tx-3.0.6.RELEASE.jar:3.0.6.RELEASE]
... 9 common frames omitted
Caused by: org.hibernate.exception.GenericJDBCException: could not insert: [com.x.x.x.x.A_HISTORY]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2454) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2874) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.envers.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:158) ~[hibernate-envers-3.6.8.1.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:543) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.engine.ActionQueue.beforeTransactionCompletion(ActionQueue.java:216) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.impl.SessionImpl.beforeTransactionCompletion(SessionImpl.java:571) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(JDBCContext.java:250) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.transaction.synchronization.CallbackCoordinator.beforeCompletion(CallbackCoordinator.java:125) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.transaction.synchronization.HibernateSynchronizationImpl.beforeCompletion(HibernateSynchronizationImpl.java:51) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at weblogic.transaction.internal.ServerSCInfo.doBeforeCompletion(ServerSCInfo.java:1239) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1214) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:116) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1316) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:2132) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:272) ~[com.bea.core.transaction_2.7.0.0.jar:2.7.0.0]
... 12 common frames omitted
Caused by: java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setLongInternal(OraclePreparedStatement.java:4901) ~[ojdbc6.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatement.setLong(OraclePreparedStatement.java:4888) ~[ojdbc6.jar:11.2.0.2.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setLong(OraclePreparedStatementWrapper.java:206) ~[ojdbc6.jar:11.2.0.2.0]
at weblogic.jdbc.wrapper.PreparedStatement.setLong(PreparedStatement.java:778) ~[com.bea.core.datasource6_1.9.0.0.jar:1.9.0.0]
at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:52) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:130) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.type.ComponentType.nullSafeSet(ComponentType.java:317) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2195) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2430) ~[hibernate-core-3.6.8.Final.jar:3.6.8.Final]
... 33 common frames omitted