当前位置: 首页 > 知识库问答 >
问题:

如何从一个事务中返回多个值?

彭坚壁
2023-03-14

是否可以对同一个事务多次调用< code > dslcontext . transaction result()?

我希望在同一个事务中向不同的表中插入行,并将主键返回给封闭(非事务)代码块。

我知道我可以创建一些自定义的返回类型来保存多个值,但是从代码可读性的角度来看,最好是多次调用< code > dslcontext . transaction result()并每次传递一个单独的结果。

共有2个答案

越学博
2023-03-14

我同意克努特的回答。一个简单的例子是:

// The global transaction
List<Integer> result = outer.transactionResult(inner -> {

    // The transactional logic you wish to repeat:
    TransactionalCallable<List<Integer>> block = ctx -> { ... };

    // Your repeated calls to nested transactions, producing separate generated keys, each
    List<Integer> list = new ArrayList<>();
    list.addAll(inner.transactionResult(block));
    list.addAll(inner.transactionResult(block));
    return list;
});
谢清野
2023-03-14

由< code > dslcontext . transaction result()调用的callable表示事务,并在事务完成后使用从< code > Configuration # transaction provider()获得的< code>TransactionProvider提交或回滚。

但是事务可以嵌套(参见文档中的示例)。因此,如果您有一个外部事务(再次使用<code>DSLContext.transactionResult()),那么您可以为每个要插入其中的表创建一个嵌套事务,并可能通过这种方式实现您的目标。

 类似资料:
  • 问题内容: 选项:使用元组 考虑下面这个简单的例子: 但是,随着返回值的数量增加,这很快就会成为问题。如果要返回四个或五个值怎么办?当然,你可以继续修改它们,但是很容易忘记哪个值在哪里。在任何想要接收它们的地方打开它们的包装也是很丑陋的。 选项:使用字典 下一步的逻辑步骤似乎是引入某种“记录符号”。在Python中,一种明显的方法是使用dict。 考虑以下: (请注意,y0,y1和y2只是抽象标识

  • 我正在尝试使用FastAPI MongoDB创建一个API,它可以从请求中返回多个值。MongoDB充满了数据,使用mongoengine,我可以在向特定endpoint发送请求时查阅一个或所有数据。我现在要做的是从endpoint接收一个或多个数据,例如: 当查询endpoint< code > http://127 . 0 . 0 . 1:8000/rice 时,我得到一个JSON响应,其中包

  • 问题内容: 在Java中是否可以从方法返回两个或多个值到main?如果是这样,有可能吗?如果没有,我们怎么办? 问题答案: 你可以使用Java返回Class的对象。 如果要返回多个相关的值,则将它们封装到一个类中,然后返回该类的对象是有意义的。 如果要返回不相关的值,则可以使用Java的内置容器类(例如Map,List,Set等)。有关更多详细信息,请检查java.util包的JavaDoc。

  • 本文向大家介绍Spring如何在一个事务中开启另一个事务,包括了Spring如何在一个事务中开启另一个事务的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring如何在一个事务中开启另一个事务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 spring使用@Transactional开启事务,而且该注解使用propagation属

  • 我希望在调用/退出子func时结束父func中的执行

  • 我的数据库中有两个表: 表1:购买物品 表1列出了购买的物品,表2每小时更新一次每件物品的当前价格。因此,从表2中可以清楚地看出,肉类最后一次交易是在2013年2月20日上午10点,而鱼类不是在同一天交易的,它是在2013年2月19日上午9点交易的,鸡肉是在2013年2月20日上午9点交易的。我想做的是,列出表1中的所有项目,并加入表2中各个项目的最后交易价格,如下所示: 这里应该应用什么类型的连