//conn.setAutoCommit(false);
会不会是自动commit的,所以会有一条记录,但回滚是应该发生的

解决方案 »

  1.   

    connection默认先自动提交,执行第二条插入时会滚。应该这样吧
      

  2.   

    异常catch中加入sessionContext.setRollBackOnly()
      

  3.   

    在加入异常catch中加入sessionContext.setRollBackOnly()
    后!抱一下错误!java.rmi.RemoteException: Error during postInvoke.; nested exception is: java.lang.Exception: [EJB:011063]Stateless session beans with bean-managed transactions must commit or rollback their transactions before completing a business method. The method doInsert() of EJB 'JtaEjb' either returned or threw an Exception without properly completing a transaction.
      

  4.   

    是不是必须要用datasource!不用可以不!
      

  5.   

    conn.setAutoCommit(false);
    你为什么要注释掉这句呢?在bean管理事务时,我想你的每个连接都要setAutoCommit(false);才合理吧。
    说明:没有测试,仅供参考
      

  6.   

    用jta的话!不用conn.setAutoCommit(false);吧!
    跟数据库已经没有关系了!
      

  7.   

    在Bean管理的事务中不能调用EJBContext接口的getRollbackOnly和setRollbackOnly方法,这两个方法只能在容器管理事务中被调用。在Bean管理事务中,应调用UserTransaction接口的getStatus和rollback方法。另外,在你提供的情况下,使用多个数据源和连接有必要吗?
      

  8.   

    插入了一条记录,是回滚失败了吧,你把exception打出来看看