У меня есть сущность User
который имеет много-много отношения к ролям. Я пытался реализовать Оптимистическую блокировку, все работает нормально, просто когда я менял роли, он не меняет версию (версию объекта пользователя), это правильное поведение?
class User {
/**
* User's roles.
*
* @ORM\ManyToMany(targetEntity="Role")
*/
private $roles;
...
Механизмы блокировки Doctrine 2 не принимают во внимание ассоциации. Они защищают только от изменений самих объектов. ИМХО, это ожидается, потому что у него нет возможности узнать, какие ассоциации включать, а какие игнорировать. Это не то, что вы хотели бы случиться вслепую во всех ассоциациях.
Теоретически Doctrine 2 могла бы достичь этого, добавив опцию в сопоставления ассоциаций, но в данный момент это просто не поддерживается.
Итак, у вас есть 2 варианта:
Я не пробовал, но я думаю, что это правильное поведение (потому что flush не изменяет сущность User), и нет причины блокировать сущность User — она не изменилась.