Добрый день! 
Есть два класса:
class User {
    // ...
    // Здесь уже описан кастомный тип counter отнаследованный от JsonType
    #[Column(type: 'counter')]
    private Counter $counter;
    // ...
}
class Counter implements \JsonSerializable {
    private int $value = 0;
    // ...
    public function add() {
        ++$this->value;
    }
    // 
}
// ...
$user->getCounter()->add();
$em->flush();
В момент выполнения сохранения, даже если перед этим сделать persist, обновляется все, кроме counter. В момент создания сущности, json поле заполянется правильно.Я знаю примерно почему это происходит, доктрина не видит изменений т.к. сравнивает counter по ссылке. Делаю вывод, что можно решать пробелму через clone и другими эврестическими решениями:
// Вариант 1
$user->setCounter(clone $user->getCounter());
// Вариант 2
#[Entity]
#[HasLifecycleCallbacks]
class User {
    // ...
    #[PreUpdate]
    public function updateCounter(): void
    {
        $this->counter = clone $this->counter;
    }
}
Но есть ли какой нибудь элегантный способ? Например: Сделать поле обязательно обновляемым или изменить правила проверки.