Spring + EntityManagerFactory + Hibernate Listeners + Injection
我有一个简单的问题。可以通过@Ressource或@Autowired向Hibernate Eventlistener添加依赖注入吗?
我将向您展示我的entitymanagerfactory配置:
<bean id="entityManagerFactory" class="org.hibernate.ejb.EntityManagerFactoryImpl">
<qualifier value="entityManagerFactory" />
<constructor-arg>
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitManager">
<bean
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManagerr">
<property name="defaultDataSource" ref="dataSource" />
</bean>
</property>
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="mis" />
<property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence" />
<property name="jpaProperties" ref="jpa.properties" />
<property name="jpaDialect" ref="jpaDialect" />
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true" />
<property name="database">
<util:constant
static-field="org.springframework.orm.jpa.vendor.Database.POSTGRESQL" />
</property>
<property name="showSql" value="true" />
</bean>
</property>
</bean>
</constructor-arg>
</bean>
目前我通过jpa.properties注册我的监听器,
hibernate.ejb.event.load=com.example.hibernate.events.LoadEvent
但在这种情况下,我的听众没有弹簧注射。我找到了一个解决方案,但这使用sessionFactory而不是entitymanager oder我可以在我的上下文中修改sessionfactory吗?希望有人有一个好主意或解决方案来处理这个问题!
十分感谢!
没有找到相关结果
已邀请:
1 个回复
拟蓬
但由于您使用的是JPA,我担心您需要使用此线程中概述的AOP 或者你可以 将ApplicationContext存储在ThreadLocal或自定义holder类中,并通过静态方法公开它 为你的听众提供这样的基类: 基类:
现在在你的lifycycle方法中首先调用
。 更新: 以下是
的示例实现:
将它连接到Spring Bean配置中,如下所示: