日期:2014-05-19  浏览次数:20661 次

hibernate使用save 后rollback不起作用
session=HibernateUtils.getSessionFactory().getCurrentSession();
trans=session.getTransaction();
trans.begin();
session.save(user);
  trans.rollback();

经过调试 发现在session.save(user)时 在数据库中插入了一条数据, 但是在trans.rollback()后数据库中user这条数据还在

hibernate.cfg.xml中的配置是
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory</property>
  <property name="hibernate.connection.autocommit">false</property>




大家帮帮忙吧

------解决方案--------------------
因为在调用session.save()时,hibernate同时执行了session.flush(),这个方法是清理(注意不是清空!)hibernate缓存,同时发送SQL语句到数据库(但并没有更新数据库,直到commit()后才更新)