Ich habe eine Spring MVC-Service-Methode zum Ausführen von save() und update() - zwei Operationen.Spring MVC Rollback mit benutzerdefinierten Nachricht
Nachdem save() erfolgreich ausgeführt wurde, wenn ich finde, dass der zu aktualisierende Benutzer nicht existiert, werde ich manuell eine neue RuntimeExcetion() auslösen, um die Sicherungsoperation rückgängig zu machen. In diesem Fall, wie könnte ich die Fehlermeldung ("kann den Benutzer nicht finden") zur Seite des Browsers zurückgeben?
@Transactional(rollbackFor = { Exception.class })
public Map<String,Object> service(){
Map<String,Object> map = new HashMap<String,Object>();
//1. save user
User user = getUser();
this.save(user);
//2. try to update another
String anotherUserId = "anUserId";
User anUser = this.getById(anotherUserId);
if(anUser != null){
anUser.setName("newName");
this.update(anUser);
map.put("status",true);
}else{
//logical error
map.put("status",false);
map.put("err_msg","cant find the user for update");
//triger rollback(rollback save user)
throw new RuntimeException("update user error");
}
return map;
}
Wirklich zu schätzen wissen! Es funktioniert perfekt, ich habe nicht daran gedacht etwas zu tun, nachdem SpringTransactional eine Ausnahme gemacht hat. –