Yes I think that's the correct behavior with a small twist.
Every non HibernateException and PersistenceException should mark for rollback.
HibernateException and PersistenceException have different rules that are 
implemented somewhere nearby.

On 22 févr. 2010, at 18:47, Hardy Ferentschik wrote:

> Hi,
> 
> I was just looking at HHH-4676 - "Any interceptor exception (RTE) should  
> mark the tx for rollback"
> and was wondering whether we can generally say that in JPA any  
> RuntimeException will mark the current
> transaction for a rollback.
> 
> Currently we have this in AbstractEntityManagerImpl:
> 
> 
>       public RuntimeException convert(RuntimeException e) {
>               RuntimeException result = e;
>               if ( e instanceof HibernateException ) {
>                       result = convert( (HibernateException) e );
>               }
>               else if (e instanceof ConstraintViolationException) {
>                       markAsRollback();
>               }
>               //if any RT exception should mark the tx for rollback, convert 
> the last  
> else if into a else
>               return result;
>       }
> 
> 
> 
> Should this be changed to:
> 
> 
>       public RuntimeException convert(RuntimeException e) {
>               RuntimeException result = e;
>               if ( e instanceof HibernateException ) {
>                       result = convert( ( HibernateException ) e, null );
>               }
>               else {
>                       markAsRollback();
>               }
>               return result;
>       }
> 
> Meaning all RuntimeExceptions will mark the current transaction for  
> rollback? Any comments?
> 
> --Hardy
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev


_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to