[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