首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此线程当前没有处于活动状态的外部托管事务

此线程当前没有处于活动状态的外部托管事务
EN

Stack Overflow用户
提问于 2021-10-11 12:56:42
回答 1查看 50关注 0票数 0

我有一个调用包和存储过程的方法,但它给出了这个错误:这个线程当前没有活动的外部管理事务。

我应该更改或添加什么来修复此问题?

代码语言:javascript
复制
@Override
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void rebuildIndexes() {
    Query query = getEm().createNativeQuery("BEGIN OFPA_ARCHIVING.rebuild_archiving_indexes; END;");
    query.executeUpdate();
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-05 21:40:04

https://javaee.github.io/javaee-spec/javadocs/javax/ejb/TransactionAttributeType.html中的文档指出

NOT_SUPPORTED容器调用一个企业bean方法,该方法的事务属性为NOT_SUPPORTED,具有未指定的事务上下文。

您应该将TransactionAttributeType更改为确保事务的某个值。如果您在EJB类中(无状态、有状态或单例),则默认情况下支持此功能,因此无需任何注释即可运行。

选择哪个值取决于您的业务案例,但通常您将使用:

REQUIRED:这是默认设置,so.os与根本不使用注释相同。这意味着如果该方法的调用者没有事务,就会创建一个新的事务。

MANDATORY:与前面相同,但如果调用者没有事务,将抛出异常(TransactionRequiredException)

REQUIRES_NEW:如果您想使用方法的开始和结束来启动和结束事务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69526586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档