2

Userロールと多対多の関係を持つエンティティがあります。オプティミスティック ロックを実装しようとしましたが、すべて正常に動作します。役割を変更しただけで、バージョン (ユーザー エンティティのバージョン) は変更されません。これは適切な動作ですか?

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

2 に答える 2

1

Doctrine 2 のロックメカニズムは関連付けを考慮していません。それらは、エンティティ自体への変更に対してのみ保護します。IMHOこれは、どの関連付けを含めてどれを無視するかを知る方法がないため、予想されます。これは、すべてのアソシエーションでやみくもに起こりたいことではありません。

理論的には、Doctrine 2 は関連付けマッピングにオプションを追加することでこれを実現できますが、現時点ではサポートされていません。

したがって、2 つのオプションがあります。

  1. そのような機能を実装してみて、PR を提出してください :)
  2. この特定の関連付けを考慮に入れる独自の楽観的ロック メカニズムを実装します。
于 2014-11-19T21:22:47.387 に答える
0

私は試しませんでしたが、これは適切な動作だと思います (フラッシュは User エンティティを変更しないため)、User エンティティをロックする理由はありません - 変更されていません。

于 2014-11-19T10:32:38.663 に答える