我有两个web应用,即内置在一起,并分别提供到数据库的客户端和管理员存取权。

我想2个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元素,但我不能找到一种方法,在现有的弹簧元件注入他们...

我是相当新的春天,所以我可能误解了什么......感谢您的帮助!

有帮助吗?

解决方案

我想你要找的东西是这样的(更不用说在这个例子中,实际听众):

<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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top