No puede hacer eso usando la anotación prePersist dentro de su entidad. El problema con su enfoque es que no puede acceder al entityManager dentro de su modelo, pero necesitará eso para decirle que no persista en su enity.
Se puede usar un detector de eventos como se explica en la documentación de la doctrina: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#implementing-event-listeners
A continuación, escuchar el caso PrePersist, ver si alguna entidad del tipo en cuestión pide ser persistido y ver si su condición es cierto. De ser así, podría decirle al entityManager que separe la entidad.
PERO Creo que se puede hacer mucho más simple ajustando el contenido a notnull y transformar el contenido a un valor nulo si la longitud es < 1. Asegurarse de que persistan las entidades correctas es parte de la lógica de dominio y que no lo haría esto en la entidad misma o en algún oyente de eventos. Si tienes muchos de esos oyentes y condiciones, terminas con muchas restricciones mágicas que nadie conoce.
Además del enfoque anterior, podría implementar un método válido() y verificar si se cumplen ciertas condiciones. Su lógica de dominio solo persistirá en la entidad si valid() es verdadera. Un enfoque aún mejor es usar el validador symfony2 para validar su entidad y luego actuar en consecuencia.
Gracias, intentaré crear un detector de eventos. – user1501227
El acceso a la documentación está restringido, por favor revise el enlace. Me aparece "No tienes acceso a esta versión". –
Gracias por su pista. El nuevo enlace es http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#implementing-event-listeners. ¡Edité la respuesta original en consecuencia! – Sgoettschkes