我正在使用hibernate来存储来自Web服务的一组对象。
当收到对象时,我正在使用休眠保存它们。
接收对象包装在事务中,并且在收到最终对象后,所有对象都显示在数据库中。
我现在正在尝试保存时每个对象都出现在数据库中。我已尝试用
实现这一目标getHibernateTemplate().saveOrUpdate( foo );
getHibernateTemplate().flush();
getHibernateTemplate().clear();
我的理解是这应该删除值hibernate的缓存并将值写入数据库。
任何学习或指导?
答案 0 :(得分:1)
感谢Brian的帮助。问题结果是包裹保存调用的另一个类中的for
循环。
解决方案是删除for
循环并将其替换为iterator
。
Hibernate为整个for
循环保持相同的事务。使用iterator
,Hibernate似乎启动了一个新事务,因此在开始下一个事务之前执行对数据库的提交,然后执行刷新。
答案 1 :(得分:0)
如果您仍在交易中,则只有打开交易的会话或连接才能查看记录。在某些数据库中,如果执行脏/未提交读取,则应从另一个会话中看到它们。我会尝试在刷新后使用相同的Hibernate会话运行select,以验证它确实在数据库中。只是不要通过主键查询,或者你可以从缓存中获取它。