实体BEAN的事务是容器管理的,而且一个实体BEAN代表的是表中一条记录,不能在实体BEAN中一次更新多条记录,更新多条记录这个业务逻辑应该放在会话BEAN中实现。

解决方案 »

  1.   

    使用session facade方式,在session bean中开启事务上下文,出错时进行处理(jta方式)因cmb是不可逆的操作,所以需调用另一个方法将已经写入的记录删除,也就是进行补偿性事务。
    当然,最简单的方法是,把需要更新的数据用打包,以值对象形式传入到实体Bean中,既然是cmb,容器自然会对事务进行处理,也省却了用户自定义的诸多麻烦和随之可能的错误。----------------------
    cmb是由容器控制事务的,使用setAutoCommit(..)等人为在bean内部干预是不可能的,除非事务处理方式改为bean控制。
      

  2.   

    你自己不用管,只要一个方法中,有一步有错就会全部回滚的,cmp 的事务是容器管理的
      

  3.   

    “最简单的方法是,把需要更新的数据用打包,以值对象形式传入到实体Bean中,既然是cmb,容器自然会对事务进行处理,也省却了用户自定义的诸多麻烦和随之可能的错误。”学习中....