假设我有一个服务方法,我在其中进行一些验证/休息调用等(例如 someServiceMethod2 in),并希望以事务方式使其安全。我还有一个包含交易的 repoMethod。当父事务抛出异常时,如何回滚子事务?
有没有办法在事务中加入这两种方法?就像 TransactionDefinition.PROPAGATION_REQUIRED
传播在 Spring lib 中所做的一样。
fun someServiceMethod () {
client.withTransaction { c ->
val bla = someServiceMethod2() // works
someRepo.doSthRepoStuff(bla)) // works
throw Exception("Just for test purpose") // crashes -> should also rollback transaction from doSthRepoStuff
}
}
...
fun doSthRepoStuff(bla : String) {
client.withTransaction { c ->
// do db related stuff here
}
}
我现在唯一能做的就是只使用服务事务并将连接传递给 repo 方法。这对我来说有点奇怪(给 repo 方法一个 sql 连接)
有没有一种优雅的方法来解决这个问题?