前端之家收集整理的这篇文章主要介绍了
JSR-303依赖注入和Hibernate,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
404_0@
Spring 3.0.2,
Hibernate 3.5.0,
Hibernate-Validator 4.0.2.GA
我试图使用以下方式将Spring依赖项注入到ConstraintValidator中:
@PersistenceContext
private EntityManager entityManager;
我已经配置了应用程序上下文:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidator@R_502_49@"/>
根据Spring文档,它应该允许“自定义ConstraintValidators从任何其他Spring bean的依赖注入中受益”
在调试器中,我可以看到Spring调用getBean来创建ConstraintValidator.稍后当flush触发preInsert时,会创建并调用一个不同的ConstraintValidator.问题是在这个新的ConstraintValidator中EntityManager为null.我已经尝试在ConstraintValidator中注入其他依赖项,并且这些依赖项始终为空.
有人知道是否可以将依赖项注入到ConstraintValidator中?
在EntityManager中注入一个Spring上下文感知ValidatorFactory的最好
方法是使用javax.persistence.validation.factory
属性.配置如下:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManager@R_502_49@">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.HsqlDialect" />
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="javax.persistence.validation.factory" value-ref="validator" />
</map>
</property>
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidator@R_502_49@"/>
请享用!