2

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

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

2 回答 2

1

Doctrine 2 的锁定机制不考虑关联。它们仅防止实体本身发生变化。恕我直言,这是意料之中的,因为它无法知道要包含哪些关联以及要忽略哪些关联。这不是您希望在所有关联中盲目发生的事情。

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

所以你有2个选择:

  1. 尝试实现这样的功能,并提交 PR :)
  2. 实现您自己的乐观锁定机制,该机制确实考虑了这种特定的关联。
于 2014-11-19T21:22:47.387 回答
0

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

于 2014-11-19T10:32:38.663 回答