javax.persistence.RollbackException: Transaction marked as rollbackOnly
Bonjour,
J'ai migré une appli de vieilles librairies à des librairies un peu plus à jour.
J'ai un souci quand je veux supprimer une ligne dans une table (toute simple sans clé étrangère ou autre).
Je finis dans GenericJpaDAO.jabva par appeler (comme avant) :
Code:
1 2 3 4 5 6 7
| public void deleteObject(Object object) {
try {
em.remove(object);
} catch (Exception e) {
em.remove(em.merge(object));
}
} |
Dans le service
Code:
1 2 3
| public void deleteMySpecificObject(MySpecificObject obj) {
myDAO.deleteObject(obj);
} |
Au cas où ça serve, comme avant le service est déclaré comme tel :
Code:
1 2 3 4
| @Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
public class MyService implements IMysService {
...
} |
J'arrive pas à trouver de solution pour comprendre ce qui provoque ça.
L'insertion d'une nouvelle ligne fonctionne bien et sa modification également, mais la suppression ne marche plus...
EDIT : si je remplace par em.remove(object); par em.remove(em.merge(object)); --> ça marche de nouveau.
Autrement dit mon Exception n'était pas catchée et donc maintenant la fonction remove ne marche plus tant qu'un merge n'est pas fait avant.
-->si quelqu'un peu m'expliquer car je ne suis pas très confiant d'avoir du flou dans ma couche bas niveau...
Merci.