是否可以针对同一笔交易多次调用DSLContext.transactionResult()
?
我想在同一事务中的不同表中插入行,并将主键返回到封闭的(非事务性)代码块。
我知道我可能可以创建一些自定义返回类型来保存多个值,但是从代码可读性的角度来看,最好多次调用DSLContext.transactionResult()
并每次传递一个单独的结果。
答案 0 :(得分:1)
DSLContext.transactionResult()
调用的callable代表事务,并在事务完成后使用从TransactionProvider
获得的Configuration#transactionProvider()
进行提交或回滚。
但是事务可以嵌套(请参见documentation中的示例)。因此,如果您有外部事务(再次使用DSLContext.transactionResult()
),则可以为要插入其中的每个表进行嵌套事务,并可能以这种方式实现目标。
答案 1 :(得分:0)
我同意Knut's answer。一个简单的例子是:
config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], token_params: { parse: :json }