我们正在使用具有乐观锁定的 Hibernate 技术,所有实体都带有 @version 注释。
如果用户尝试保存已过期的对象,则会抛出异常,我们会收到 stalestateexception 的提示,这工作得很好。在我们的情况下,我们想向用户提供一个通知屏幕来放弃更改或覆盖数据库中的当前值。
这是一种常见的过期状态异常用例。我的问题与此用例有关。如果用户决定使用自己的更改覆盖当前数据库行,最佳策略是什么?我已查阅了 Hibernate 参考指南和不同的网站,但只是提到您必须自己捕获 stalestateexception ,然后编程处理数据的覆盖。我在想,Hibernate 是否有一些实用工具来简化此策略,如果用户决定使用他的数据进行覆盖,最简单的方法是从数据库检索实体的最后一个版本,然后将所有更改字段复制到此对象,然后将更改后的对象保存回数据库。
但我不停地在想是否有更优雅的解决方案。
如果用户尝试保存已过期的对象,则会抛出异常,我们会收到 stalestateexception 的提示,这工作得很好。在我们的情况下,我们想向用户提供一个通知屏幕来放弃更改或覆盖数据库中的当前值。
这是一种常见的过期状态异常用例。我的问题与此用例有关。如果用户决定使用自己的更改覆盖当前数据库行,最佳策略是什么?我已查阅了 Hibernate 参考指南和不同的网站,但只是提到您必须自己捕获 stalestateexception ,然后编程处理数据的覆盖。我在想,Hibernate 是否有一些实用工具来简化此策略,如果用户决定使用他的数据进行覆盖,最简单的方法是从数据库检索实体的最后一个版本,然后将所有更改字段复制到此对象,然后将更改后的对象保存回数据库。
但我不停地在想是否有更优雅的解决方案。