Java 关联jOOQ事务和记录侦听器

Java 关联jOOQ事务和记录侦听器,java,sql,jooq,Java,Sql,Jooq,有没有办法关联jOOQ事务和记录侦听器 一旦记录添加到某个表中,我需要触发某些操作。RecordListenerinsertEnd是合适的钩子,但据我所知,这并不保证记录确实被插入。调用insertEnd后,事务仍可能回滚,或者对一个表的插入可能是一批插入的一部分,这批插入也会影响其他表 另一方面,如果我实现了TransactionListenercomitEnd,我就无法确定实际插入了哪些记录。TransactionContext没有此信息。您可以通过访问为此目的创建的属性来执行此操作。考虑这

有没有办法关联jOOQ事务和记录侦听器

一旦记录添加到某个表中,我需要触发某些操作。RecordListenerinsertEnd是合适的钩子,但据我所知,这并不保证记录确实被插入。调用insertEnd后,事务仍可能回滚,或者对一个表的插入可能是一批插入的一部分,这批插入也会影响其他表


另一方面,如果我实现了TransactionListenercomitEnd,我就无法确定实际插入了哪些记录。TransactionContext没有此信息。

您可以通过访问为此目的创建的属性来执行此操作。考虑这两个听众:

类RL扩展了DefaultRecordListener{ @凌驾 public void insertEndRecordContext ctx{ //将一些属性放入数据映射中 ctx.configuration.datax,y; } } 类TL扩展了DefaultTransactionListener{ 字符串x; @凌驾 公共无效CommittenTransactionContext ctx{ //再次检索属性 x=字符串ctx.configuration.datax; } } 然后可按如下方式使用:

RL RL=新的RL; TL=新的TL; 配置 德里维尔先生 德里维特尔先生 .dsl .transactionc->{ assertNullc.datax; TRecord t=c.dsl.newRecordT; t、 setAa; t、 挫折b; //此处触发插入 资产质量1,t.插入; assertEqualsy,c.datax; //这里触发了Committen }; //因为事务创建了一个嵌套的派生范围,所以您看不到这些东西 //在可能的全局配置中,从事务外部 assertNullctx.datax; assertNullctx.configuration.datax; 资产质量,tl.x;
您可以通过访问为此目的创建的属性来实现这一点。考虑这两个听众:

类RL扩展了DefaultRecordListener{ @凌驾 public void insertEndRecordContext ctx{ //将一些属性放入数据映射中 ctx.configuration.datax,y; } } 类TL扩展了DefaultTransactionListener{ 字符串x; @凌驾 公共无效CommittenTransactionContext ctx{ //再次检索属性 x=字符串ctx.configuration.datax; } } 然后可按如下方式使用:

RL RL=新的RL; TL=新的TL; 配置 德里维尔先生 德里维特尔先生 .dsl .transactionc->{ assertNullc.datax; TRecord t=c.dsl.newRecordT; t、 setAa; t、 挫折b; //此处触发插入 资产质量1,t.插入; assertEqualsy,c.datax; //这里触发了Committen }; //因为事务创建了一个嵌套的派生范围,所以您看不到这些东西 //在可能的全局配置中,从事务外部 assertNullctx.datax; assertNullctx.configuration.datax; 资产质量,tl.x;