- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
您能否在不需要事务的方法中调用需要事务的方法?
@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/
我有以下代码结构,我需要有关如何从同一 EJB 中的 NOT_SUPPORTED 事务类型方法级联启动本地事务的指南。 @Stateless @TransactionManagement(value
有没有TransactionAttributeType.NOT_SUPPORTED每个数据库查找方法都有意义吗?如果不执行更新,我认为附加实体没有意义。 @TransactionAttribute(T
根据 documentation , 在容器管理的事务中,如果一个方法被注释为 TransactionAttributeType.REQUIRES_NEW 属性,将暂停任何客户端事务,委托(deleg
我需要在 glassfish3.0 上使用 JPA 2.0 和 EJB3.0 删除忽略任何完整性约束的员工列表(即成功删除尚未与任何其他实体相关的实体或跳过与其他实体相关的实体) : 我迭代列表并在
名为 Aby 的 EJB 方法调用另一个名为 Bob 的 EJB 方法Bob标有 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW
查看此链接: When does @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) commit? B怎么可能是正确答案呢?我认
我有包含以下代码的 OwnerService 类: public RegisterOwnerResult registerOwner(RegisterOwnerRequest request) {
如果我有嵌套的 bean 方法,这些方法只是从数据库中获取数据。 (即获取 API)。那么将所有 bean 方法标记为 TransactionAttributeType.NOT_SUPPORTED 是
我遇到了一个奇怪的 EJB 事务属性问题。 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 没有按预期启动新事务。 我将 EJ
您能否在不需要事务的方法中调用需要事务的方法? @TransactionAttribute(value = TransactionAttributeType.NEVER) public void Do
我碰巧找到了使用这个结构的例子,虽然我不确定我能从中得到什么? 这是否意味着无状态 EJB 中的所有 select 语句都应该遵循这一点? @Stateless public class Employ
请帮助我了解 EJB 3.1 中的事务。我正在使用 GlassFish v3 并遇到以下情况: @Stateless @LocalBean public class BeanA { @Inje
我最近偶然发现了下一段 Java EE6 代码: @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) pub
我正在使用 mdb-jms。我创建了一个具有 2 个方法的 EJB 无状态类。(i) 方法 insertInput() 被注释为 @TransactionAttribute(TransactionAt
我是一名优秀的程序员,十分优秀!