日期:2014-05-18  浏览次数:20692 次

执行getHibernateTemplate.save(user)后,控制台已经显示出sql插入语句,但数据库里并没有数据?
执行了getHibernateTemplate.save(user)后,控制台有hql语句输出,显示已经将数据存到数据库了,也没有抛出异常,但是去oracle数据库查的时候,压根就没有数据。。。。请问是怎么回事?

就下面这段代码:

public void save(User user) { 

getHibernateTemplate().save(user); 



------解决方案--------------------
你是在UnitTest里,如果是的话,多半你们设置了自动回滚为每一个测试方法。

另外,你你检查一下,插入数据后,在你的事务提交之前,是不是发生了什么异常,如果有异常的话,事务不会提交,会回滚掉之前的操作。
------解决方案--------------------
hibernate没有使用spring事务代理的时候,默认不是自动提交的,
你这里需要手动的commit一下把
Transaction tran=session.openTran.....
getHibernateTemplate().save(user);  
tran.commit();
------解决方案--------------------
引用:
hibernate没有使用spring事务代理的时候,默认不是自动提交的,
你这里需要手动的commit一下把
Transaction tran=session.openTran.....
getHibernateTemplate().save(user);  
tran.commit();

+1
------解决方案--------------------
参考4楼。
------解决方案--------------------
如果数据库开启了事务,
要么开启Hibetnate 自动提交功能,
要么手动提交.

<session-factory >
  <property name="hibernate.connection.autocommit">true</property>

....
------解决方案--------------------
四楼说的对:


hibernate没有使用spring事务代理的时候,默认不是自动提交的,
你这里需要手动的commit一下把
Transaction tran=session.openTran.....
getHibernateTemplate().save(user);   
tran.commit(); 

------解决方案--------------------
hibernate没有使用spring事务代理的时候,默认不是自动提交的,
你这里需要手动的commit一下把
Transaction tran=session.openTran.....
getHibernateTemplate().save(user);
tran.commit(); 


这个说了对的   你要姑SPRING配置文件要设置 自动提交的  估计你没有设置