教义2中的乐观锁定不适用于多对多关系



我有一个实体User,它与角色有多对多的关系。我试着实现了乐观锁,一切都很好,只是当我改变角色时,它不会改变版本(用户实体版本),这是正确的行为吗?

class User {
    /**
     * User's roles.
     *
     * @ORMManyToMany(targetEntity="Role")
     */
     private $roles;
...

条令2的锁定机制不考虑关联。它们只保护实体本身不受更改的影响。IMHO这是意料之中的事,因为它无法知道该包括哪些关联,该忽略哪些关联。这不是你想在所有的联想中盲目发生的事情。

理论上,原则2可以通过在关联映射中添加一个选项来实现这一点,但目前这根本不受支持。

所以你有两个选择:

  1. 尝试实现这样的功能,并提交PR:)
  2. 实现您自己的乐观锁定机制,将此特定关联考虑在内

我没有尝试,但我认为这是正确的bahaviour(因为flush不会修改用户实体),并且没有理由锁定用户实体-它没有改变。

最新更新