Cómo validar entidades únicas en una colección de entidades en symfony2

Tengo una entidad con una relación de OneToMany con otra entidad. Cuando persisto en la entidad principal, quiero asegurar que los elementos secundarios no contengan duplicados.

Aquí están las clases que he estado usando, eldescuentos la colección no debe contener dos productos con el mismo nombre para un cliente determinado.

Tengo una entidad cliente con una colección de descuentos:

/**
 * @ORM\Entity
 */
class Client {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=128, nullable="true")
     */
    protected $name;

    /**
     * @ORM\OneToMany(targetEntity="Discount", mappedBy="client", cascade={"persist"}, orphanRemoval="true")
     */
    protected $discounts;

}

/**
 * @ORM\Entity
 * @UniqueEntity(fields={"product", "client"}, message="You can't create two discounts for the same product")
 */
    class Discount {
        /**
         * @ORM\Id
         * @ORM\Column(type="string", length=128, nullable="true")
         */
        protected $product;

        /**
         * @ORM\Id
         * @ORM\ManyToOne(targetEntity="Client", inversedBy="discounts")
         * @ORM\JoinColumn(name="client_id", referencedColumnName="id")
         */
        protected $client;

        /**
         * @ORM\Column(type="decimal", scale=2)
         */
        protected $percent;
    }

Traté de usarUniqueEntity para la clase de Descuento, como puede ver, el problema es que parece que el validador solo comprueba lo que está cargado en la base de datos (que está vacía), por lo que cuando las entidades persisten, obtengo un "SQLSTATE [23000]: Infracción de restricción de integridad".

He comprobado elColección La restricción de compra parece manejar solo colecciones de campos, no entidades.

También está elTodos validador, que le permite definir restricciones que se aplicarán a cada entidad, pero no a la colección como un todo.

Necesito saber si hay restricciones de colección de entidades en conjunto antes de continuar en la base de datos, aparte de escribir unvalidador personalizado o escribiendo unLlamar de vuelta validador cada vez.

Respuestas a la pregunta(2)

Su respuesta a la pregunta