我使用的是 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 操作起作用,或者我观察到问题并进行干预。这意味着我需要将 BookRecord.store() 的每个实例包装在 try/catch 中。然后,这适用于所有 UpdatableRecords 中的所有 CRUD 操作。
有没有一种简单的方法可以处理所有生成的 Record 类型的所有 CRUD DataAccessException,而不必记住一遍又一遍地实现相同的异常处理程序?
我不确定这是否能满足您的实际要求,但使用ExecuteListener http://www.jooq.org/javadoc/latest/org/jooq/ExecuteListener.html,您可以挂钩 jOOQ 的一般查询执行生命周期,并将一些行为注入 jOOQ 的异常处理中。这里给出一些例子:
http://www.jooq.org/doc/3.1/manual/sql-execution/execute-listeners 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
}
}
请注意,这目前不会阻止异常本身的抛出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)