@
Gilgamesh7 不管是 jooq 还是 mybatis ,示例中都是使用 spring 的 @
Transactional 注解来声明事务的。我的代码写的有一些歧义,但事务应该都要能正常生效才对。自调用是可能导致事务失效,但自调用的方法自身是已经开启了事务的,那么事务就应该继续生效才对。现在我换用了 jooq 的事务方法使用编程式事务,测试代码如下
```java
@
Test@
DisplayName("jooq 编程式事务")
@
Order(5)
public void testJooqExceptionByProgrammatic() {
TUser tUser = null;
try {
// 开启事务
tUser = dslContext.transactionResult(() -> {
return userService4Jooq.insertRetuningThrow(userId4Jooq, userName4Jooq);
});
} catch (Exception e) {
// 不需要关注此异常
}
Assertions.assertNull(tUser, "事务回滚失败");
}
```
事务可以正常运行,插入的结果正常回滚了
但声明式事务还不清楚是什么原因失效了