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 ...
我正在使用 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 ...