Doctrine2中的乐观锁定不适用于多对多关系

时间:2014-11-11 18:33:16

标签: php concurrency doctrine-orm optimistic-locking optimistic-concurrency

我有实体User,它与角色有许多关系。我试图实现乐观锁,一切正常,就在我改变角色时,它不会改变版本(用户实体版本),这是正确的行为吗?

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

2 个答案:

答案 0 :(得分:1)

学说2的锁定机制不考虑关联。它们只能防止实体本身的变化。恕我直言,这是预期的,因为它无法知道要包含哪些关联以及要忽略哪些关联。这并不是你想要盲目地对所有协会发生的事情。

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

所以你有两个选择:

  1. 尝试实施此功能,并提交PR:)
  2. 实现您自己的乐观锁定机制,该机制确实考虑了这种特定的关联。

答案 1 :(得分:0)

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