我有两个webapps,它们一起构建,分别提供对数据库的客户端和管理员访问权。
我想将两个JPA EntityListeners注册到一个给定的类,每个应用程序一个。为此,我试图找到一种方法来通过配置每个应用程序的JPA上下文的Spring XML配置文件来注册侦听器......并且找不到任何方法。
有没有人做过类似的事情?
以下是XML配置文件的一部分:
<bean id="tempEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="tempDataSource" p:persistenceUnitName="tempJpa" >
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:database="ORACLE"
p:databasePlatform="org.hibernate.dialect.Oracle9iDialect"
p:showSql="false" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
</props>
</property>
</bean>
我认为有一种方法可以在这些元素周围注册一个监听器,尤其是JPAProperties,因为它似乎是设置JPA配置元素的地方......
JPA规范谈到实体监听器XML元素,但我找不到将它们注入可用Spring元素的方法......
我对Spring很新,所以我可能误解了一些事情......感谢您的帮助!
答案 0 :(得分:10)
我猜你正在寻找的是这样的事情(更不用说这个例子中的实际听众了):
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- other configuration cut out -->
<property name="jpaProperties">
<props>
<!-- for hibernate envers -->
<prop key="hibernate.ejb.event.post-insert">
org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener
</prop>
<prop key="hibernate.ejb.event.post-update">
org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener
</prop>
<prop key="hibernate.ejb.event.post-delete">
org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener
</prop>
<prop key="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener
</prop>
<prop key="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener
</prop>
<prop key="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener
</prop>
</props>
</property>
</bean>