0

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

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

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

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

getHibernateTemplate().saveOrUpdate( foo );

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

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

有什么学习或方向吗?

4

2 回答 2

1

感谢布赖恩的帮助。问题原来是for包装保存调用的另一个类中的循环。

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

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

于 2009-02-01T20:49:39.327 回答
0

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

于 2009-01-23T04:57:35.523 回答