Java 异常 - 当 autocommit=true 时无法调用提交

Java exception - Can't call commit when autocommit=true

我正在使用 EJB 开发应用程序,当我在数据库上进行事务处理时出现以下错误:

Grave: RAR5031:System Exception
javax.resource.spi.LocalTransactionException:
Can't call commit when autocommit=true

代码如下:

public boolean update(Person vo) {
    boolean r = false;
    try 
    {
        entityManager.getTransaction().begin();
        entityManager.merge(vo);            
        entityManager.getTransaction().commit();
        r = true;
    } catch (Exception e) 
    {
    } finally {
        return r;
    }
}

如果此代码不从 EJB 调用,则不会出错。我仅在从 EJB 调用时才收到错误。

所有 EJB 方法默认都是事务性的。事务处理由 EJB 执行,因此您不需要调用 begin() 和 commit()。

将此注释 @TransactionManagement(TransactionManagementType.BEAN) 放在您的会话 bean 上。 示例:

@TransactionManagement(TransactionManagementType.BEAN)
public class YourSessionBean ...