[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - entitymanager cache corrupted on rollback
deanhiller
do-not-reply at jboss.com
Fri May 1 10:31:45 EDT 2009
I was hoping I could use a long running "user/application" transaction or what is sometimes called conversation in a certain scenario like so....
1. begin conversation
2. tx 1....load list of stuff I need to process
3. tx 2...process first item in list
4. tx 3...process second item in list
5. tx 4...process third item in list
6. etc. etc. etc.
If 4 fails and gets rolled back, I want 5 to still go. I would almost expect the entire cache at step 4 to be flushed so my changes would not be persisted. It seems though with hibernate that step 5 is dead because step 4 failed....Here is my test code below.....
| EntityManagerFactory sf = Persistence.createEntityManagerFactory(
| "xcoreNonJta", null);
|
| EntityManager mgr = sf.createEntityManager();
| org.hibernate.Session session = (org.hibernate.Session) mgr.getDelegate();
| session.setFlushMode(org.hibernate.FlushMode.MANUAL);
|
| //verify we are in flush manual mode first by NOT flushing!!
| mgr.getTransaction().begin();
| Users user = Users.getUserById(mgr, "admin");
| user.setCountry("USACCCCC");
| mgr.getTransaction().commit();
|
|
| mgr.getTransaction().begin();
|
|
| user.setAddress1("addr1CCCCC"); //written to db 3 lines later during commit!!!
| mgr.flush(); //NOTE: whatever changes are above flush are persisted at commit time
| user.setAddress2("addr2CCCCC"); //not written to db at all due to rollback and after flush
| mgr.getTransaction().commit();
|
| mgr.getTransaction().begin();
|
| user.setCity("city1"); //not written to db because of the rollback even though flush is called
|
| mgr.flush();
| mgr.getTransaction().rollback();
|
| mgr.getTransaction().begin();
|
| user.setAddress1("addr1DDDDD"); //not written to db, the cache appears to be forever dead!!!
| mgr.flush();
| user.setAddress2("addr2DDDDD");
| mgr.getTransaction().commit();
|
| mgr.close();
| sf.close();
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4228021#4228021
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4228021
More information about the jboss-user
mailing list