Use o Symfony UniqueEntity com a Doutrina

Estou tentando fazer com que o validador UniqueEntity do Symfony funcione para minhas entidades do Doctrine. O validador Symfony já está conectado e funcionando, mas o UniqueEntity do Symfony \ Bridge é mais desafiador, exibindo este erro:

PHP Fatal error:  Class 'doctrine.orm.validator.unique' not found in /app/vendor/symfony/validator/Symfony/Component/Validator/ConstraintValidatorFactory.php on line 46

Parece que o ValidatorFactory está solicitando o validador UniqueEntity do contêiner Symfony, que não tenho porque não estou usando o symfony de pilha completa.

Minha entidade fica assim:

<?php
namespace App\Model;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints as AssertDoctrine;

/**
 * User
 *
 * @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"})})
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 * @AssertDoctrine\UniqueEntity("username")
 */
class User extends AbstractEntity
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="username", type="string", length=45, unique=true, nullable=false)
     * @Assert\Length(min=3, max=45)
     */
    protected $username;

    /** ... */
}

onde AbstractEntity é uma superclasse mapeada, incluindo uma característica que fornece funcionalidade de validação para todas as entidades:

<?php
namespace App\Model\Traits;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Validation;
use App\Utility\Exception\ConstraintViolationException;

/**
 * A trait enabling validation of Doctrine entities to ensure invalid entities
 * don't reach the persistence layer.
 */
trait ValidatorAwareTrait
{
    public function validate()
    {
        $validator = Validation::createValidatorBuilder()
            ->enableAnnotationMapping()
            ->getValidator();

        $violations = $validator->validate($this);

        // Count is used as this is not an array but a ConstraintViolationList
        if (count($violations) !== 0) {
            $message = $violations[0]->getPropertyPath() . ': ' . $violations[0]->getMessage();
            throw new ConstraintViolationException($message);
        }
        return true;
    }
}

questionAnswers(3)

yourAnswerToTheQuestion