| 
        
        
        
       
        
        Hibernate Transaction commit prevents to lock another record in a loop
       
                  
        Hi,
 I have a problem with hibernate in my application. I am using a loop for processing records like example below-
 
 Fetch 10 records
 While()
 {
 Begin transaction
 Lock one record(using session.lock)
 Process this record
 Commit transaction
 }
 
 Application will run on two or more machines to access one database, this is why lock is important.
 
 Inside the loop everything is fine in first run, but next time when trying to lock it gets error-
 
 2012-07-11 05:33:02,361 ERROR [STDERR] net.sf.hibernate.exception.GenericJDBCException: Unable to perform find
 At net.sf.hibernate.exception.ErrorCodeConverter.hand ledNonSpecificException(ErrorCodeConverter.java:90 )
 At net.sf.hibernate.exception.ErrorCodeConverter.conv ert(ErrorCodeConverter.java:79)
 At net.sf.hibernate.exception.JDBCExceptionHelper.con vert(JDBCExceptionHelper.java:29)
 At net.sf.hibernate.impl.SessionImpl.convert(SessionI mpl.java:4131)
 At net.sf.hibernate.impl.SessionImpl.find(SessionImpl .java:3663)
 At net.sf.hibernate.impl.CriteriaImpl.list(CriteriaIm pl.java:238)
 At com.uniteller.switchcore.databroker.DataBroker.fet chUpdateRecord(DataBroker.java:760)
 At com.uniteller.switchcore.databroker.DataBrokerProc essor.processUpdates(DataBrokerProcessor.java:50)
 At com.uniteller.switchcore.databroker.DataBroker.run (DataBroker.java:258)
 Caused by: java.sql.SQLException: ORA-01002: fetch out of sequence
 
 At oracle.jdbc.dbaccess.DBError.throwSqlException(DBE rror.java:168)
 At oracle.jdbc.oci8.OCIDBAccess.check_error(OCIDBAcce ss.java:1597)
 At oracle.jdbc.oci8.OCIDBAccess.fetch(OCIDBAccess.jav a:1410)
 At oracle.jdbc.driver.OracleStatement.doExecuteQuery( OracleStatement.java:1681)
 At oracle.jdbc.driver.OracleStatement.doExecuteWithTi meout(OracleStatement.java:1870)
 At oracle.jdbc.driver.OraclePreparedStatement.execute Update(OraclePreparedStatement.java:363)
 At oracle.jdbc.driver.OraclePreparedStatement.execute Query(OraclePreparedStatement.java:314)
 At org.jboss.resource.adapter.jdbc.WrappedPreparedSta tement.executeQuery(WrappedPreparedStatement.java: 304)
 At net.sf.hibernate.impl.BatcherImpl.getResultSet(Bat cherImpl.java:89)
 At net.sf.hibernate.loader.Loader.getResultSet(Loader .java:880)
 At net.sf.hibernate.loader.Loader.doQuery(Loader.java :273)
 At net.sf.hibernate.loader.Loader.doQueryAndInitializ eNonLazyCollections(Loader.java:138)
 At net.sf.hibernate.loader.Loader.doList(Loader.java: 1063)
 At net.sf.hibernate.loader.Loader.list(Loader.java:10 54)
 At net.sf.hibernate.loader.CriteriaLoader.list(Criter iaLoader.java:118)
 At net.sf.hibernate.impl.SessionImpl.find(SessionImpl .java:3660)
 ... 4 more
 |