gpt4 book ai didi

java - 在方法上使用 @TransactionAttribute(value = TransactionAttributeType.NEVER)

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:18 42 4
gpt4 key购买 nike

您能否在不需要事务的方法中调用需要事务的方法?

@TransactionAttribute(value = TransactionAttributeType.NEVER)
public void DoSomething(final List<Item> items) {

//can you call a method that requires a transaction here ?
for (Item i : items) {
methodCall(item);

}

@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
public void methodCall(final Item item) {
// access lazily loaded item properties
item.getSalesOrder();
item.getAllocation();

//throws org.hibernate.LazyInitializationException: could not initialize proxy - no Session

}

.NEVER 属性表示它将保证该方法不会在事务内运行,但是调用该方法内的其他方法又如何呢

最佳答案

注释仅定义了调用注释方法时必须存在的必需事务状态(在这种情况下,事务不得存在)。它不限制注释方法执行过程中可能发生的情况。所以在这个方法中你可以毫无问题地开始一个新的事务。

在您提供的示例中,您可以从事务设置为 NEVER 的方法中调用需要事务的方法。在这种情况下,将为需要该事务的方法调用创建一个新事务。如果内部方法标有 MANDATORY 设置,则内部方法调用将失败,因为现有事务不存在并且 MANDATORY 设置不会自动为您创建一个。

关于java - 在方法上使用 @TransactionAttribute(value = TransactionAttributeType.NEVER),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455225/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com