Frühling 3.0.2, Hibernate 3.5.0, Hibernate-Validator 4.0.2.GAJSR-303 Dependency Injection und Hibernate
Ich versuche Frühling Abhängigkeiten in eine ConstraintValidator zu injizieren mit:
@PersistenceContext
private EntityManager entityManager;
ich habe den Anwendungskontext konfiguriert mit:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
, die nach der Frühlings-Dokumentation ermöglichen sollte „cu stom ConstraintValidators, um von der Abhängigkeitsinjektion wie jede andere Spring-Bean zu profitieren "
Im Debugger kann ich Spring aufrufen, der getBean aufruft, um den ConstraintValidator zu erstellen. Später, wenn flush den PreInsert auslöst, wird ein anderer ConstraintValidator erstellt und aufgerufen. Das Problem ist, dass der EntityManager in diesem neuen ConstraintValidator null ist. Ich habe versucht, andere Abhängigkeiten innerhalb des ConstraintValidator zu injizieren, und diese sind immer Null.
Weiß jemand, ob es möglich ist, Abhängigkeiten in einen ConstraintValidator zu injizieren?
' NONE validation-Modus>' funktioniert der Trick. Und Sie müssen die Validatoren nicht einmal manuell aufrufen. Spring übergibt die Validierung an den Hibernate-Validator. Mit Hibernate Validator 4.1 hatte ich das Problem, dass plötzlich alle Entitäten zweimal validiert wurden. Einmal durch Spring (mit Autowinding) und einmal durch HV (ausgefallen, weil nicht autowired). Es funktionierte jedoch mit Hibernate Validator 4.0. –
Koraktor
sowie "javax.persistence.validation.mode" auf "none" setzen. – Matt