【发布时间】:2013-03-11 15:35:59
【问题描述】:
Hibernate 与 DTO 一起使用的设计问题。
在我们的一个实体上,我们使用乐观锁定和@Version 注释。当前的问题是,在合并后,版本号直到刷新后才更新。这意味着它发生在我们的 DTO 转换过程之外。我们最终使用旧版本号将转换后的 DTO 发送回客户端。对此的后续操作现在会导致乐观锁失败,因为 Hibernate 会检查不同的数据库版本号。
我已经设法通过一些涉及使用 ThreadLocal 容器和事件侦听器的 hack 来解决这个问题,但我想知道当您使用业务/客户端 DTO 时,关于如何处理系统刷新后更新的属性是否存在公认的最佳实践.
任何想法或想法表示赞赏, 谢谢, 手
【问题讨论】:
-
在将实体转换为 DTO 之前不能简单地调用 flush() 吗?
-
道歉应该解释 - 尝试在标准 DAO 框架内执行此操作,因此我想尽可能避免提前刷新,因为我们可能需要应用于所有合并操作。这种行为在我们的系统中可能并不理想。