gpt4 book ai didi

java - Hibernate 从控制台记录异常

转载 作者:行者123 更新时间:2023-11-30 06:55:32 25 4
gpt4 key购买 nike

我在 Spring 上的 Web 应用程序中使用 Hibernate。我在 Controller 中的方法使用 try catch block ,如果一切正常,我设置重定向参数“success == true”,如果出现问题,我使用“error == true”。有用。但有时在我的控制台中, hibernate 会向我显示警告,例如如下所示:

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

我只想在 try catch block 中捕获这些警告,因为如果我尝试使用重复条目向数据库添加新条目(在本例中为重复条目),那么在 try catch block 中,所有内容都会被接受,并且我收到信息“操作成功”,但它不是。我 try catch 不同的异常,例如 SQLException、HibernateException,甚至一般异常。但这不起作用。对于添加、更新、删除条目等操作,我使用“void”方法,因此无法返回某些值。

是否可以从控制台捕获这些警告/错误以及如何捕获?

@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";
}
}

这是我的方法之一的示例,我如何做到这一点,但它不起作用。

最佳答案

打印这些错误是 hibernate 的默认性质。如果您只想隐藏日志,您可以禁用以下软件包的日志。在 Spring Boot 中,就像

logger.level.org.hibernate.util=OFF

但是不建议这样做,因为其他相关日志可能会被忽视。

在您的情况下,您可以在插入之前检查记录是否已经存在,从而避免错误本身。

boolean isUserExist = userService.isUserExist(user.getName());
if(!isUserExist){
userService.createBasicUser(user);
redirectAttributes.addAttribute("success", true)
else {
redirectAttributes.addAttribute("error", true);
return "redirect:/admin/user/adduser";
}

虽然可能有可能在两个服务调用之间添加另一个用户,但这可以使用全局异常处理程序作为特殊情况处理,该处理程序将显示通用错误消息,因为这种情况不太可能发生(取决于应用程序) )

关于java - Hibernate 从控制台记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com