Ich verwende Spring Boot und muss jetzt Transaktionen verwalten, wenn ich mich bei der DB registriere.
Wenn Sie einer öffentlichen Methode eine @ Transactional-Annotation hinzufügen und eine Ausnahme auslösen, wird diese anscheinend automatisch zurückgesetzt.
Deshalb habe ich es versucht, aber es hat überhaupt nicht funktioniert. Ich habe versucht, die Einstellungen für die Anmerkungen zu ändern, aber sie wurden überhaupt nicht zurückgesetzt.
Nachdem ich zwei oder drei Stunden gekämpft hatte und im Internet durch das Meer gekrochen war, sah ich einen göttlichen Leuchtturm.
https://ameblo.jp/kochablo/entry-11578714824.html
Gott
Es funktionierte mit einem einzigen Schlag. Danke an den Pionierbruder. Vielen Dank.
Ich fragte mich jedoch, wie es war, es direkt zu nennen. Ich möchte jemandem helfen, der wie ein Pionierbruder in Schwierigkeiten ist, und ich werde es im Folgenden ausführlich erläutern.
SampleController.java
class SampleController{
@Autowired
private SampleService sampleService;
public String sample(){
sampleService.transactionalInsert();
return "sampleView";
}
}
SampleService.java
class SampleService{
public void transactionalInsert(){
doInsert();
}
@Transactional
public void doInsert(){
//Irgendwie Verarbeitung wie Insert to DB
//Verarbeitung zum Auslösen von RuntimeExeption, wenn dies nicht funktioniert
}
}
Dies sollte nicht der Fall sein.
SampleController.java
class SampleController{
@Autowired
private SampleService sampleService;
public String sample(){
sampleService.doInsert();
return "sampleView";
}
}
SampleService.java
class SampleService{
public void transactionalInsert(){
doInsert();
}
@Transactional
public void doInsert(){
//Irgendwie Verarbeitung wie Insert to DB
//Verarbeitung zum Auslösen von RuntimeExeption, wenn dies nicht funktioniert
}
}
Hast du verstanden? Wie auch immer, wenn Sie die @ Transactional-Methode aus der @ Autowired-Klasse aufrufen, ist das verrückt.
Recommended Posts