Ich verwende Hibernate in meiner Webanwendung auf Spring. Meine Methoden im Controller mit try catch block und wenn alles in Ordnung ist, setze ich redirect Parameter "success == true" und wenn etwas schief gelaufen ist, benutze ich "error == true". Es funktioniert. Aber manchmal in meiner Konsole Hibernate zeigt Warnung mich zum Beispiel wie folgt aus:Ruhezustandsprotokolle von der Konsole als Ausnahmen
2017-01-28 19:13:44.253 WARN 4532 --- [nio-8080-exec-8] o.hibernate.util.JDBCExceptionReporter : SQL Error: 1062, SQLState: 23000
2017-01-28 19:13:44.253 ERROR 4532 --- [nio-8080-exec-8] o.hibernate.util.JDBCExceptionReporter : Duplicate entry
Ich möchte nur diese Warnungen fangen in Block try fangen, weil, wenn ich versuche neuen Eintrag DB hinzufügen mit - in diesem Fall - doppelte Eintrag dann in try catch block wird alles akzeptiert und ich habe die Information "Operation succesfull" bekommen, aber es ist nicht. Ich habe versucht, verschiedene Ausnahmen wie SQLException, HibernateException, auch allgemein zu fangen - Ausnahme. Aber es funktioniert nicht. Für Operationen wie Hinzufügen, Aktualisieren, Löschen von Einträgen verwende ich 'void' Methoden, so kann ich keinen Wert zurückgeben.
Kann man diese Warnungen/Fehler von der Konsole abfangen und wie?
@RequestMapping(value="/adduserdb", method=RequestMethod.POST)
public String addUserToDb(@ModelAttribute(value="userform") User user, RedirectAttributes redirectAttributes) {
try {
userService.createBasicUser(user);
redirectAttributes.addAttribute("success", true);
return "redirect:/admin/user/adduser";
} catch(Exception e) {
redirectAttributes.addAttribute("error", true);
return "redirect:/admin/user/adduser";
}
}
Hier ist Beispiel für eine meiner Methoden, wie ich das tun, aber es funktioniert nicht.
Sind Sie sicher, dass die Ausnahme tatsächlich ausgelöst wird? Es würde einen Unterschied zwischen "Fangen nicht fangen" und "nichts zu fangen" geben. Vielleicht handhabt userService es? – Deltharis