Rollback est fait ici comme prévu:Grails (2.3) @Transactional ne pas rollback
@Transactional(propagation = Propagation.REQUIRES_NEW)
def test1() {
def dummy = new Dummy(name: "test1")
dummy.save()
throw new RuntimeException("test1!")
}
Mais pas ici - ce qui est probablement faux - try/catch ne devrait pas affecter le comportement:
@Transactional(propagation = Propagation.REQUIRES_NEW)
def test2() {
def dummy = new Dummy(name: "test2")
dummy.save()
try {
throw new RuntimeException("test2!")
} catch (all) {
println all.message
}
}
Je m'attendais à ce que le proxy reconnaisse l'exception quand même. Voir test 2 ici: http://devhobbs.blogspot.de/2015/04/grailsgorm-transactions.html (résultat du test 2: aucun enregistrement écrit, l'annulation est annulée) –
pour être clair, vous êtes dans un service? '@Transactional (propagation = Propagation.REQUIRES_NEW) def test1() {' est dans un service?plutôt que le contrôleur puisque si vous regardez l'exemple que vous avez fourni '@Transactionalclass BookService {' – Vahid
J'ai mis à jour ma réponse depuis mon commentaire sur votre exemple etc allait être trop long vérifier la réponse mise à jour – Vahid