我有一个调用包和存储过程的方法,但它给出了这个错误:这个线程当前没有活动的外部管理事务。
我应该更改或添加什么来修复此问题?
@Override
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public void rebuildIndexes() {
Query query = getEm().createNativeQuery("BEGIN OFPA_ARCHIVING.rebuild_archiving_indexes; END;");
query.executeUpdate();
}发布于 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:如果您想使用方法的开始和结束来启动和结束事务。
https://stackoverflow.com/questions/69526586
复制相似问题