覆盖jOOQ对UpdatableRecords的异常处理

时间:2013-09-21 13:05:54

标签: java sql activerecord jooq

我正在使用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,而不必记得一遍又一遍地实现相同的异常处理程序?

1 个答案:

答案 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
    }
}

注意,这当前不会阻止抛出异常本身。