Hibernate flush不会更新数据库

时间:2009-01-23 03:27:14

标签: hibernate flush

我正在使用hibernate来存储来自Web服务的一组对象。

当收到对象时,我正在使用休眠保存它们。

接收对象包装在事务中,并且在收到最终对象后,所有对象都显示在数据库中。

我现在正在尝试保存时每个对象都出现在数据库中。我已尝试用

实现这一目标
getHibernateTemplate().saveOrUpdate( foo );

getHibernateTemplate().flush();
getHibernateTemplate().clear();

我的理解是这应该删除值hibernate的缓存并将值写入数据库。

任何学习或指导?

2 个答案:

答案 0 :(得分:1)

感谢Brian的帮助。问题结果是包裹保存调用的另一个类中的for循环。

解决方案是删除for循环并将其替换为iterator

Hibernate为整个for循环保持相同的事务。使用iterator,Hibernate似乎启动了一个新事务,因此在开始下一个事务之前执行对数据库的提交,然后执行刷新。

答案 1 :(得分:0)

如果您仍在交易中,则只有打开交易的会话或连接才能查看记录。在某些数据库中,如果执行脏/未提交读取,则应从另一个会话中看到它们。我会尝试在刷新后使用相同的Hibernate会话运行select,以验证它确实在数据库中。只是不要通过主键查询,或者你可以从缓存中获取它。