我在Try / Catch块中有一个方法,它调用Hibernate DB Save操作来插入一行。
即使存在DB问题(例如,当我将NULL插入非NULL列时),该方法也能成功完成。然后,在稍后的某个时刻,Hibernates会尝试“刷新”或完成事务,这就是错误被抛出的时候。
这会扰乱我的代码流,因为我依靠我的方法成功完成其他事情,例如发出电子邮件。在调用我的方法之后,我继续发送电子邮件,假设没有发生错误(否则我会被抛出我的代码流并进入我的Catch块,但这是不发生)。
有没有人有任何想法如何处理这种情况?
答案 0 :(得分:3)
简单的回答是简单地调用Session.flush()
并且任何挂起的SQL都将运行,从而导致当时可能潜伏的任何SQL异常。
在某种较大的范围内,您可能希望查看在应用程序级别验证数据的选项,而不是依赖SQL异常来检测错误。当然,无论哪种方式都有不足之处。