Manera correcta de hacer una consulta de EntityManager durante la validación de Hibernate

Soy un poco de noob de Java EE / EJB, pero de los documentos y otras publicaciones que he recopilado no se puede consultar la base de datos utilizando el mismo administrador de entidad / sesión durante la validación de la entidad.

En general, el método de ciclo de vida de una aplicación portátil no debe invocar las operaciones EntityManager o Query, acceder a otras instancias de la entidad o modificar las relaciones dentro del mismo contexto de persistencia. [43] Un método de devolución de llamada de ciclo de vida puede modificar el estado de no relación de la entidad en la que se invoca.

¿Traducción por favor?

Esto es bastante abstracto ... ¿puede explicarse en términos más concretos? Conduce a más preguntas que respuestas. Por ejemplo, si mi entidad tiene una colección de carga lenta, ¿puedo acceder a ella durante la validación? La colección es 'otra entidad' y requerirá una consulta de base de datos que parece estar en violación de los documentos.

Este "requisito del ciclo de vida" parece extraño porque es solo un hecho de la vida que ciertas validaciones requieren una consulta en la base de datos.

De otras publicaciones, también he visto a personas resolver este problema de consulta creando un nuevo administrador / sesión de entidad utilizando el factor de entidad de entidad.

Esto me lleva a dos preguntas sobre el uso de EntityManagers y Hibernate Validation:

¿Es posible que tenga algún tipo de falla de diseño o estoy haciendo un mal uso de la validación de Hibernación porque necesito consultar la base de datos durante la validación?Dado que estoy usando Java EE con JBoss, ¿cómo inyecto mi validador con un EntityManagerFactory?

He intentado algo como esto:

@Stateless
public class UserValidator implements ConstraintValidator<ValidUser, User> {
    @PersistenceUnit(unitName="blahblah")
    EntityManagerFactory emf;

    ...
}

Pero el EMF nunca se inyecta. Supongo que la etiqueta @Stateless se vuelve irrelevante porque estoy implementando una interfaz ConstraintValidator que es necesaria para que funcione el validador de hibernación.

Entonces, ¿cuál es el patrón general para obtener un EntityManagerFactory desde un Validator?

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta