2010-10-02 7 views
0

J'ai la structure de code suivante dans la classe de service. Le problème est dans le cas de l'exception, l'annulation de la transaction uniquement pour "insert A()". J'utilise spring-ibatis.Le code des boucles internes ne se résout pas lors de la transaction Spring

function save 
{ 
insert A(); 

for loop_1() 
{ 
    insert B() 
    insert C() 
    insert D() 
} 

for loop_2() 
{ 
    insert E() 
    insert F() --> throws RunTimeException 
} 
} 
+0

Ce n'est pas Java. Nous ne pouvons pas diagnostiquer des spécificités avec juste un pseudocode. – skaffman

Répondre

0

Merci à tous, je n'ai pas remarqué qu'une de mes tables n'est pas InnoDB (j'utilise mysql). Je l'ai changé pour InnoDB et maintenant la transaction fonctionne.

0

Je pense que vous feriez mieux de vérifier le réglage de la propagation de la transaction pour la méthode B(), C(), D(), E() et assurez-vous qu'ils sont excuted dans la même transaction physique avec la méthode A(),F().

Lequel utilisez-vous, PROPAGATION_REQUIRED ou PROPAGATION_REQUIRES_NEW?