我正在使用jOOQ v2.6,因为我使用的是SQL Server 2008 R2,而jOOQ v3.1中存在一个错误导致代码生成失败。 (我知道这将在v3.2中修复)。
从手册:
// Create a new record
BookRecord book1 = create.newRecord(BOOK);
// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
book1.setTitle("1984");
book1.store();
如果store()失败,则抛出DataAccessException。在我的情况下,我只是喜欢睡眠过程,直到CRUD操作工作,或者我观察问题并进行干预。这意味着我需要在try / catch中包装BookRecord.store()的每个实例。这适用于所有UpdatableRecords中的所有CRUD操作。
是否有一种简单的方法可以处理所有生成的Record类型的所有CRUD DataAccessExceptions,而不必记得一遍又一遍地实现相同的异常处理程序?
答案 0 :(得分:3)
我不是100%确定这是否符合您的实际要求,但使用ExecuteListener
,您可以挂钩到jOOQ的一般查询执行生命周期,并将一些行为注入到jOOQ的异常处理中。这里给出了一些例子:
http://www.jooq.org/doc/3.1/manual/sql-execution/execute-listeners
特别是,您的自定义ExecuteListener
可能如下所示:
public class MyListener extends DefaultExecuteListener {
@Override
public void exception(ExecuteContext ctx) {
// Put some logic here
}
}
注意,这当前不会阻止抛出异常本身。