对于“使用实体 ID 保存差异”这个问题,我找到了以下答案:
“对于实体,Id 属性不能为 null,因此您需要将此类映射为 ValueObject。如果是,则 Id 属性被视为常规属性,它不会转到该对象的 GlobalId。”
我的问题是:
如果 Id 为 NULL,为什么不能将实体视为 NEW?
我有一个从数据库中获取的对象图,在两个 javers 提交之间,一个实体被添加到图中的列表中。
- 两次提交,在第二次提交中有一个新实体(Id NULL)
- 获取更改 => 例外,因为 Javers 无法创建 GlobalId。
我可以通过执行 EntityManager 来解决这个问题 - 持久化(创建 Id:s),但我想避免这样做。当前的代码可能会在稍后进行持久化,或者它只是让事务完成。
因为 Id 为 NULL,所以实体是 NEW。是否可以生成一个唯一的临时 Id(允许 Id = NULL)来创建 GlobalId?在更改列表中,实体将被报告为 NEW。无需与较早的提交进行比较。