1. логика в doctrine event listeners не связанная с персистом - это путь в ад отладки и багов 2. ему не нужно это делать в момент персиста. Он просто хочет провалидировать ВЕСЬ объект. Ничего сложного. Юник констнейнт приведет как пример и только.
листенеры доктрины нужны для персистенса. когда тебе надо там расширить логику работы и т.д. мэппинга - например - свои какиех-то хитрые правила для работы с референами, кастомные типы объектов, сериализации десериализации хитрые. Но никакой бизнес логики
у меня форма билдится по данным из бд поля формы формируются при запросе и в зависимости от наличия флага unique у формы мне надо включать или выключать constraint