【发布时间】:2011-06-22 04:47:15
【问题描述】:
我正在开发一个使用 Hibernate 将对象持久保存在数据库中的 Web 应用程序。 这是问题 我们将从第三方获取 XML,我们需要将这些数据保存到数据库中。我们可以稍后为同一实体获取更新的 XML,因此我们需要更新所有记录,但由于我们从第三方获取更新的 XML,所以没有他们可以为我们提供该实体的 UUID 的方式。 所以我们使用以下方法 检查对象是否已经在数据库中(XML 具有唯一值作为 entityid) 如果对象存在删除记录并将其保存为新对象(替换模式的种类) 如果对象不在数据库中,则简单保存。
现在我们面临一个严重的问题。如果我保存了对象,然后在第二次调用中我们发送了一个更新的请求,其中包含更新的记录的对象 hibernate 正在使用上次事务中保存的对象更新此对象 UUID。
现在它可以删除对象,但是当我们尝试保存对象时,它会抛出 stalestate 异常,因为 hibernate 已经为这个对象设置了 UUID。
我们尝试使用 update 方法,但如果在稍后阶段我们尝试更新对象,这将一直有效,直到上下文相同,而不是它会抱怨标识符属性,因为在这种情况下它将为空。
任何人都可以帮助我解决这个问题,因为这似乎是上下文和休眠内部会话管理的问题。
提前致谢 乌梅什
【问题讨论】: