[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-907) optimistic-lock="false" for timestamped object results in SQLException: Invalid column index
Steve Ebersole (JIRA)
noreply at atlassian.com
Mon Mar 21 13:00:49 EDT 2011
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-907?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Ebersole closed HHH-907.
------------------------------
Closing stale resolved issues
> optimistic-lock="false" for timestamped object results in SQLException: Invalid column index
> --------------------------------------------------------------------------------------------
>
> Key: HHH-907
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-907
> Project: Hibernate Core
> Issue Type: Bug
> Components: core
> Affects Versions: 3.0.5
> Environment: Windows/Oracle 10g JDBC driver / Oracle 9.2 RDBMS
> Solaris/Oracle 9.2 JDBC/RDBMS (different exception thrown for the same problem)
> Reporter: Dmitri Rasnitsyn
> Assignee: Gavin King
> Fix For: 3.1 rc 1
>
>
> Setting optimistic-lock="false" for an attribute in the object with timestamp version results in SQLException: invalid column index when session is flashed. This happens if the attribute with optimistic-lock="false" is the only attribute changed (so the timestamp should not be incremented).
> Hibernate generates correct SQL:
> update MO set deletionInd=? where MOOID=?
> But then calls OraclePreparedStatement.setTimestamp () (none of the ? corresponds to the timestamp)
> http://forum.hibernate.org/viewtopic.php?t=946776
> Mapping documents:
> <?xml version="1.0"?>
> <!DOCTYPE hibernate-mapping PUBLIC
> "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
> >
> <hibernate-mapping package="com.lucent.ic.framework.data" >
> <class name="Mo" table="MO" dynamic-update="true" >
> <id
> column="MOOID"
> name="moOid"
> type="java.lang.Long"
> length="12"
> >
> <generator class="sequence"><param name="sequence">MoOid</param></generator>
> </id>
> <discriminator column="moType" type="string" length="23" insert="false" />
> <natural-id>
> <property
> column="moName"
> length="200"
> name="moName"
> not-null="true"
> type="string"
> />
> </natural-id>
> <timestamp
> name="lastUpdate"
> column="lastUpdate"
> />
> <property
> column="deletionInd"
> optimistic-lock="false"
> length="1"
> name="deletionInd"
> not-null="false"
> type="boolean"
> />
> <property
> column="lockedInd"
> length="1"
> name="lockedInd"
> not-null="false"
> type="boolean"
> />
> <!-- The rest is omitted -->
> </class>
> </hibernate-mapping>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
> <hibernate-mapping package="com.lucent.ic.framework.data.mot">
> <subclass name="MotAP_DS1" extends="com.lucent.ic.framework.data.Mo"
> discriminator-value="AP_DS1" dynamic-update="true" batch-size="500">
> <join table="MOT_AP_DS1" fetch="select">
> <key column="moOid"/>
> <!-- the rest is omitted -->
> </join>
> </subclass>
> </hibernate-mapping>
> Full stack trace of any exception that occurs:
> 3601447 2005-08-24 23:05:53,142: [pool-1-thread-2] DEBUG org.hibernate.util.JDBCExceptionReporter:63 - could not update: [com.lucent.ic.framework.data.mot.MotAP_DS1#24951]; Object: { [ Mo: com.lucent.ic.framework.data.mot.MotAP_DS1 at dba04f33: MoOid: 24951; MoType: AP_DS1; MoName: /System:SysId=10/ECP:ECPId=1/AP:APId=11/AP_DS1:DS1Id=1]; ; Mot attributes: {DS1Id=1, protocol=LAPD, link_spd=null, APId=11, boardtype=INTER, custom1=null, custom4=null, status=e, custom3=null, custom5=null, custom2=null, framing_mode=esf, ECPId=1, rsvd1_tdma=null, SysId=10, line_coding=b8zs, line_rate=t1} } [/* update com.lucent.ic.framework.data.mot.MotAP_DS1 */ update MO set deletionInd=? where MOOID=?]
> java.sql.SQLException: Invalid column index
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
> at oracle.jdbc.driver.OraclePreparedStatement.setTimestampInternal(OraclePreparedStatement.java:6272)
> at oracle.jdbc.driver.OraclePreparedStatement.setTimestamp(OraclePreparedStatement.java:6247)
> at org.hibernate.type.TimestampType.set(TimestampType.java:43)
> at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:62)
> at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:44)
> at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:1993)
> at org.hibernate.persister.entity.BasicEntityPersister.updateOrInsert(BasicEntityPersister.java:1935)
> at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:2189)
> at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:75)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
> at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
> at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
> at com.lucent.ic.framework.data.base._BaseRootDAO.flushAndClearSession(_BaseRootDAO.java:719)
> at com.lucent.ic.framework.data.dao.MotDAOImpl.flushAndClearSession(MotDAOImpl.java:316)
> at com.lucent.ic.framework.data.base._BaseRootDAO.flushAndClerSession(_BaseRootDAO.java:708)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:163)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy9.flushAndClerSession(Unknown Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy10.flushAndClerSession(Unknown Source)
> at com.lucent.ic.framework.adapters.manager.GenericDataAdapter.processFile(GenericDataAdapter.java:67)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy24.processFile(Unknown Source)
> at com.lucent.ic.framework.adapters.manager.GenericAdapter$DaExecutor.call(GenericAdapter.java:291)
> at com.lucent.ic.framework.adapters.manager.GenericAdapter$DaExecutor.call(GenericAdapter.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:595)
> 3601494 2005-08-24 23:05:53,189: [pool-1-thread-2] WARN org.hibernate.util.JDBCExceptionReporter:71 - SQL Error: 17003, SQLState: null
> 3601494 2005-08-24 23:05:53,189: [pool-1-thread-2] ERROR org.hibernate.util.JDBCExceptionReporter:72 - Invalid column index
> 3601603 2005-08-24 23:05:53,298: [pool-1-thread-2] ERROR org.hibernate.persister.entity.BasicEntityPersister:2036 - Failed to update:
> org.hibernate.exception.GenericJDBCException: could not update: [com.lucent.ic.framework.data.mot.MotAP_DS1#24951]; Object: { [ Mo: com.lucent.ic.framework.data.mot.MotAP_DS1 at dba04f33: MoOid: 24951; MoType: AP_DS1; MoName: /System:SysId=10/ECP:ECPId=1/AP:APId=11/AP_DS1:DS1Id=1]; ; Mot attributes: {DS1Id=1, protocol=LAPD, link_spd=null, APId=11, boardtype=INTER, custom1=null, custom4=null, status=e, custom3=null, custom5=null, custom2=null, framing_mode=esf, ECPId=1, rsvd1_tdma=null, SysId=10, line_coding=b8zs, line_rate=t1} }
> at org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92)
> at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80)
> at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:2026)
> at org.hibernate.persister.entity.BasicEntityPersister.updateOrInsert(BasicEntityPersister.java:1935)
> at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:2189)
> at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:75)
> at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
> at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
> at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
> at com.lucent.ic.framework.data.base._BaseRootDAO.flushAndClearSession(_BaseRootDAO.java:719)
> at com.lucent.ic.framework.data.dao.MotDAOImpl.flushAndClearSession(MotDAOImpl.java:316)
> at com.lucent.ic.framework.data.base._BaseRootDAO.flushAndClerSession(_BaseRootDAO.java:708)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.orm.hibernate3.HibernateInterceptor.invoke(HibernateInterceptor.java:163)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy9.flushAndClerSession(Unknown Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy10.flushAndClerSession(Unknown Source)
> at com.lucent.ic.framework.adapters.manager.GenericDataAdapter.processFile(GenericDataAdapter.java:67)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
> at $Proxy24.processFile(Unknown Source)
> at com.lucent.ic.framework.adapters.manager.GenericAdapter$DaExecutor.call(GenericAdapter.java:291)
> at com.lucent.ic.framework.adapters.manager.GenericAdapter$DaExecutor.call(GenericAdapter.java:1)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.sql.SQLException: Invalid column index
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
> at oracle.jdbc.driver.OraclePreparedStatement.setTimestampInternal(OraclePreparedStatement.java:6272)
> at oracle.jdbc.driver.OraclePreparedStatement.setTimestamp(OraclePreparedStatement.java:6247)
> at org.hibernate.type.TimestampType.set(TimestampType.java:43)
> at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:62)
> at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:44)
> at org.hibernate.persister.entity.BasicEntityPersister.update(BasicEntityPersister.java:1993)
> ... 53 more
> Name and version of the database you are using:
> Oracle 9.2
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list