【发布时间】:2015-10-24 22:37:42
【问题描述】:
我有一个带有 @Version 字段的 JPA 实体类,用于乐观锁定。我需要merge() 一个分离的实体实例,它的版本字段在持久性上下文中的现有实体实例上未初始化。执行此操作时,托管实例的版本字段会被覆盖,这会导致稍后出现 OptimisticLockException。
我可以在合并之前手动将版本字段的内容从托管实体复制到分离实体,但我觉得这有点尴尬。是否有更好的选择或最佳实践来处理这种情况?
【问题讨论】:
-
为什么版本字段会未初始化?您尝试合并的这个实体是在分离之前从数据库加载的吗?是这样的,版本字段应该在检索时已经设置好了。
-
分离的实体不是从数据库中读取的,而是从外部 CSV 文件中的数据构建的。该文件中的数据应该用于批量更新整个数据库。