是否可以在修改子实体和父实体时获取锁?



我的场景:
我有一个父子实体。我想和它的父母一起阅读一个孩子,更新它并保存回来。我希望整个行动都有一把锁。

当前执行流程:

  1. 获取父母和孩子实体
  2. 将实体转换为域对象(遵循DDD设计(
  3. 更新父级和子级
  4. 将CHILD域转换为CHILD实体
  5. 保存儿童实体。(父对象将自动保存为子对象与父对象具有ManyToOne关系(

get父实体,调用ParentRepository中的findbyId方法;要getchild方法,调用ChildrenRepository的findbyId方法。

保存子级和父级,调用childrenRepository中的saveAll方法。(父级通过ManyToOne关系自动保存(

我想要一个Persistent_write锁,它应该覆盖从读到写。但我不确定要锁定哪个对象或锁定哪个存储库方法。

有人能帮我吗?如果我误解了什么,请详细说明。

我在父级的repo.findby方法中声明了悲观主义_写入锁。因为我只希望父行被锁定并工作。

代码:

@Lock(LockModeType.PESSIMISTIC_WRITE)
List<...> findWithLockById(...);

最新更新