These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Problem with session and transaction in events
PostPosted: Mon Nov 20, 2006 12:42 pm 
Newbie

Joined: Mon Nov 20, 2006 11:59 am
Posts: 1
Hi,
I have a problem with transaction and session. I need to copy some data from original table to archive table by event/listener with hibernate. When I want to do update in my update listener, I've got error: index out of boun exception that occurs in transaction.commit() line in my listener. Do you have any idea how to manage correctly transaction and session in hibernate events/listeners??

Hibernate Version:
3.2

Main class code:
Session sess2 = XHibernate.getSession();
Transaction tx = sess2.beginTransaction();
Accounts acc = (Accounts) sess2.load(Accounts.class, "PIERWSZE");
Accounts acc1 = (Accounts) sess2.load(Accounts.class, "DRUGIE");
Accounts acc2 = (Accounts) sess2.load(Accounts.class, "TRZECIE");
Accounts acc3 = (Accounts) sess2.load(Accounts.class, "CZWARTE");

logger.info("Przed update");

acc.setUserId("11111113111");
acc.setDescr("11111113111");
sess2.update(acc);
acc3.setUserId("111113111");
acc3.setDescr("111113111");
sess2.update(acc3);
acc2.setUserId("5555555555");
acc2.setDescr("6666666666");
sess2.update(acc2);
logger.info("Po update");
tx.commit();
sess2.close();

Listener/event code
try{
Session sess = XHibernate.getSession();
sess.getTransaction();
AccountsAr accAr = new AccountsAr();
Accounts acc = (Accounts) entity;
accAr.setAccNumber(id.toString());

accAr = (AccountsAr) mp.mapObjectsFields(accAr, previousState, propertyNames);

accAr.setModType("U");
sess.save(accAr);
sess.getTransaction().commit();

Session ses2 = XHibernate.getSession();
ses2.beginTransaction();
acc.setModDate(accAr.getModArDate());
ses2.update(acc);
ses2.getTransaction().commit();

} catch (SecurityException e) {
logger.error(e);
e.printStackTrace();
}

Full stack trace of any exception that occurs:

---- 3688 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: disabled
---- 3688 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
---- 3688 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
---- 3735 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
---- 4954 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
---- 5032 [main] INFO com.newitech.provisions.test.junit.GlobalTests - Przed update
Hibernate: select accounts0_.ACC_NUMBER as ACC1_21_0_, accounts0_.MOD_DATE as MOD2_21_0_, accounts0_.FK_USER_ID as FK3_21_0_, accounts0_.CR_DATE as CR4_21_0_, accounts0_.DESCR as DESCR21_0_ from PVN_ACCOUNTS accounts0_ where accounts0_.ACC_NUMBER=?
Hibernate: select accounts0_.ACC_NUMBER as ACC1_21_0_, accounts0_.MOD_DATE as MOD2_21_0_, accounts0_.FK_USER_ID as FK3_21_0_, accounts0_.CR_DATE as CR4_21_0_, accounts0_.DESCR as DESCR21_0_ from PVN_ACCOUNTS accounts0_ where accounts0_.ACC_NUMBER=?
---- 5110 [main] INFO com.newitech.provisions.test.junit.GlobalTests - Po update
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
Hibernate: insert into PVN_ACCOUNTS_AR (MOD_DATE, MOD_TYPE, MOD_BY_USER_ID, FK_USER_ID, CR_DATE, DESCR, ACCOUNT_NUMBER, MOD_AR_DATE) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
---- 5204 [main] INFO com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - Mapowanie juz zostalo wykonane
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
Hibernate: insert into PVN_ACCOUNTS_AR (MOD_DATE, MOD_TYPE, MOD_BY_USER_ID, FK_USER_ID, CR_DATE, DESCR, ACCOUNT_NUMBER, MOD_AR_DATE) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
---- 5219 [main] INFO com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - Mapowanie juz zostalo wykonane
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
---- 5219 [main] INFO com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - Mapowanie juz zostalo wykonane
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
---- 5219 [main] INFO com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - Mapowanie juz zostalo wykonane
Hibernate: update PVN_ACCOUNTS set MOD_DATE=?, FK_USER_ID=?, CR_DATE=?, DESCR=? where ACC_NUMBER=?
---- 5282 [main] INFO com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - Mapowanie juz zostalo wykonane
java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener.onPostUpdate(ProvPostUpdateEventListener.java:87)
at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:183)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:162)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.newitech.provisions.test.junit.GlobalTests.testUtil(GlobalTests.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:228)
at junit.framework.TestSuite.run(TestSuite.java:223)
at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.newitech.provisions.test.junit.GlobalTests.testUtil(GlobalTests.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:228)
at junit.framework.TestSuite.run(TestSuite.java:223)
at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
---- 5329 [main] ERROR com.newitech.provisions.bl.interceptor.ProvPostUpdateEventListener - java.lang.IndexOutOfBoundsException: Index: 2, Size: 0

_________________
The spoon does not exsist


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.