0

我有一个方法,在 Try/Catch 块内,它调用 Hibernate DB Save 操作来插入一行。

即使存在数据库问题(例如,当我将 NULL 插入非 NULL 列时),该方法也会成功完成。然后,在稍后的某个时间点,Hibernates 尝试“刷新”或完成事务,这就是引发错误的时候。

这弄乱了我的代码流程,因为我依赖于我的方法成功完成来做其他事情,例如发送电子邮件。调用我的方法后,我继续发送电子邮件,假设没有发生错误(否则我会被抛出我的代码流并进入我的 Catch 块,但这不会发生)。

有谁知道如何处理这种情况?

4

1 回答 1

4

简单的答案是简单地调用Session.flush(),任何挂起的 SQL 都会运行,从而导致当时可能潜伏的任何 SQL 异常发生。

在更大的范围内,您可能希望查看在应用程序级别验证数据的选项,而不是依赖 SQL 异常来检测错误。当然,任何一种方式都有优点和缺点。

于 2012-05-08T18:20:03.047 回答