【发布时间】:2023-03-03 13:12:01
【问题描述】:
是否有一些奇特的方法可以在 Spring 中对行列表进行“差异”更新? 例如,我的数据库中有这样的行:
- A 行
- B 行
- C 行
我得到了一套新的物品:
- A 行
- C 行
- D 行
我想要的结果是:
- A 行(已更新,未删除和添加)
- C 行(已更新,未删除和添加)
- D 行(已添加)
- 已删除 B 行
在这里跟踪创建和修改日期至关重要。在 Spring 中是否有一些方便的方法来实现这一点?
提前感谢您的任何提示。
解决方案:
我还没有找到一种“好”的方法来做到这一点。最后,我添加了带有@CreationTimestamp 和@UpdateTimestamp 的日期字段(尽管后者可能是一个简单的日期/本地日期字段)。在上传新集时,对于每一行,我检查存储库是否已经有这样的对象(必须通过比较除 ID 之外的所有字段来完成,因为 ID 是自动生成的,我需要按值进行比较 - 幸运的是每个值组合我的系统是独一无二的)。
如果是,则更新日期更改为当前日期。
完成此操作后,我只是删除了更新日期早于当前日期的实体。这不是一种花哨的方式,而且速度很慢,但效果很好。
【问题讨论】:
-
"Spring" 不做数据持久化,JPA 做。定义 JPA 实体和持久性代码而不是表