2009-10-30 13 views
6

Tengo dos webapps, que están compiladas juntas y proporcionan respectivamente acceso de cliente y administrador a una base de datos.¿Cómo puedo configurar un JPA EntityListener a través de un archivo de configuración Spring XML?

Me gustaría registrar dos JPA EntityListeners en una clase determinada, una en cada aplicación. Para hacer eso, estoy tratando de encontrar una forma de registrar a los oyentes a través del archivo de configuración Spring XML que configura el contexto JPA de cada aplicación ... y simplemente no puedo encontrar ningún camino.

¿Alguien ha hecho algo similar?

Aquí está una parte del archivo de configuración 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> 

pensé que había una manera de registrar un detector en torno a estos elementos, especialmente JPAProperties, ya que parece ser el lugar para establecer la configuración de la APP elementos ...

La especificación JPA habla acerca de los elementos de entidad-oyentes XML, pero no puedo encontrar una manera de inyectar en los elementos de muelle disponibles ...

soy bastante nuevo en primavera, así que bien pude haber malentendido algo ... . ¡Gracias por tu ayuda!

+0

Gracias, esto me ayudó con valores de ejemplo jpaProperties. – Barett

Respuesta

9

supongo que lo que estás buscando es algo como esto (no importa los oyentes reales en este ejemplo):

<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> 
+0

¡Eso es lo que estaba buscando, gracias! :-) –

Cuestiones relacionadas