is it normal or bug, that flush() always occurs, even if the transaction 
rollbacks?

i have seam-managed hibernate session configured according to seam 
documentation 
http://docs.jboss.com/seam/2.0.0.GA/reference/en/html/persistence.html#d0e5849

        <property name="transaction.flush_before_completion">true</property>
  |         <property name="connection.release_mode">after_statement</property>
  |         <property 
name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
  |         <property 
name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
  |     



and a method

    @Begin
  |     @End
  |     public void save(Person person){
  |         currentSession.save(person);
  |         currentSession.createSQLQuery("{call initializePerson(:person_id)}")
  |                         .setLong("person_id", person.getId())
  |                         .executeUpdate();
  |         currentSession.refresh(person);
  |         if (!person.isInitialized()) throw new RuntimeException("Failed to 
initialize person");
  |     }
  |     



as a result of the method's execution:

if person is uninitialized , it will be a rollbacked transaction due to the 
RuntimeException. (Because it is a "System Exception" and they always cause a 
transaction rollback 
http://docs.jboss.com/seam/2.0.0.GA/reference/en/html/events.html#d0e4391 )

As expected the stored procedure "initializePerson" will be rollbacked.
But an insert of the method "currentSession.save(person)" will be executed. 
Because the property transaction.flush_before_completion's value is true.


anonymous wrote : if hibernate.transaction.flush_before_completion is enabled, 
the session will be automatically flushed during the before completion phase of 
the 
transaction.(http://www.hibernate.org/hib_docs/reference/en/html/session-configuration.html
 )
  | 

Thus we have 'partial' committed transaction. Imho, it isn't normal behaviour, 
when an exception occurs.

Any suggestions to cause full rollbacking ?

(without disabling "flush_before_completion" property or enabling 
FlushModeType.MANUAL, that seems the same))
Quote:

anonymous wrote : Note that Seam does not flush the session, so you should 
always enable hibernate.transaction.flush_before_completion to ensure that the 
session is automatically flushed before the JTA transaction 
commits.http://docs.jboss.com/seam/2.0.0.GA/reference/en/html_single/#d0e5849

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4107106#4107106

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4107106
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to