Bonjour,
Je travaille sur un projet avec une couche services JBoss EJB3 et hibernate pour la persistence. C'est JBoss qui gère mes transactions Hibernate.
J'ai du mal à comprendre un phénomène qui se produit sur la suppression d'un objet dont dépendent plusieurs objets par foreign key :
1/ Si je supprime avec Hibernate comme ceci :
HibernateUtils.getCurrentSession().delete(entity);
Je récupère une org.hibernate.exception.ConstraintViolationException qu'une fois sorti de mon service (dans le front).
2/ Si je fais ma suppression en HQL, l'exception est jetée juste après le executeUpdate() (je peux donc la catcher dans mon service) et la transaction rollback bien.
J'essaie de comprendre pourquoi je n'ai pas le même comportement dans les 2 cas. Pour moi l'explication est qu'Hibernate fait un flush de la session juste après un executeUpdate(), mais seulement à la fin du service sur un delete hibernate.
Partager