【问题标题】:Hibernate flush doesn't update database休眠刷新不更新数据库
【发布时间】:2009-01-23 03:27:13
【问题描述】:

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

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

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

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

来实现这一点
getHibernateTemplate().saveOrUpdate( foo );

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

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

有什么学习或方向吗?

【问题讨论】:

    标签: hibernate flush


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-08-11
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 2015-03-11
        相关资源
        最近更新 更多