使用DTO来设计Hibernate的问题。
在我们的一个实体上,我们使用乐观锁定和@Version注释。当前的问题是在合并时,版本号在更新后才更新。这意味着它发生在我们的DTO转换过程之外。我们最终使用旧版本号将转换后的DTO发送回客户端。对此的后续操作现在会导致乐观的锁定失败,因为Hibernate会检查不同的db版本号。
我已经成功解决了一些涉及使用ThreadLocal容器和事件监听器的黑客攻击,但是想知道当你使用业务/客户端DTO时,是否存在关于如何处理系统后刷新更新的属性的公认最佳实践#39; S
任何想法或想法,... 谢谢, 尚兹
答案 0 :(得分:0)
如果实体将由许多客户同时更新。它确实需要在您的客户端视图中保持最新版本。您需要在进行更改时刷新它(在更新后重新加载)。
如果实体仅由其所有者更新(不同时为多个用户)。你不需要保持最新的版本属性。在服务器端进行更新时。您可以加载存储的实体并设置需要使用DTO更新的proproerties,并且可以在事务中自动更新加载的PO。