¿Cómo puedo configurar un EntityListener JPA a través de un archivo de configuración Spring XML?

StackOverflow https://stackoverflow.com/questions/1649052

Pregunta

Tengo dos aplicaciones web, que se crean juntas y proporcionan respectivamente un acceso de cliente y administrador a una base de datos.

Me gustaría registrar dos JPA EntityListeners en una clase determinada, uno en cada aplicación. Para hacer eso, estoy tratando de encontrar una manera 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 ninguna manera.

¿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 forma de registrar un oyente en torno a estos elementos, especialmente JPAProperties, ya que parece ser el lugar para establecer elementos de configuración JPA ...

La especificación JPA habla sobre elementos XML de escucha de entidades, pero no puedo encontrar una manera de inyectarlos en los elementos Spring disponibles ...

Soy bastante nuevo en Spring, así que bien podría haber entendido mal algo ... ¡Gracias por su ayuda!

¿Fue útil?

Solución

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top