我故意在DAO方法中将email设置为null。在DAO类的persist方法中转到Exception块,我在自定义异常类中输入自定义错误消息“无法添加Employee”; 如何在controller.In控制器异常块中捕获该错误消息如果我使用e.getMessage()我正在获取整个消息,但我只想要自定义错误消息。
呼叫方法(控制器)
try {
employeeDao.persist(employees);
}
catch (SpringUtilException ex) {
System.out.println("..at line 87......."+ex.getErrorMessage());
}
catch (Exception e) {
System.err.println("Exception returned message: " + e.getMessage());
}
被叫方法(DAO)
public void persist(Employees employee) throws SpringUtilException {
try {
employee.setEmail(null);
em.persist(employee);
}
catch (EntityExistsException e) {
throw new SpringUtilException(e, "Employee Duplicate");
}
catch (Exception ex) {
System.out.println("at line 31 in DAO..");
throw new SpringUtilException("Failed to add Employee");
}
}
答案 0 :(得分:0)
em.persist()
只会使一个瞬态实体持久化。它不会发出任何插入语句。
引发异常的insert语句在刷新时发出。当DAO方法已经返回时,在事务结束时完成刷新(在本例中)。
不要依赖数据库约束来验证您的对象。明确地验证它们,如果实体无效,甚至不要调用persist()
。数据库约束是最后的手段检查。