Comment puis-je configurer un JPA EntityListener via un fichier de configuration XML Spring?

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

Question

J'ai deux applications Web, qui sont construites ensemble et qui fournissent respectivement un accès client et administrateur à une base de données.

Je souhaite enregistrer deux EntityListeners JPA dans une classe donnée, un dans chaque application. Pour ce faire, j'essaie de trouver un moyen d'enregistrer les écouteurs via le fichier de configuration XML Spring qui configure le contexte JPA de chaque application ... et ne trouve aucun moyen.

Quelqu'un a-t-il déjà fait quelque chose de similaire?

Voici une partie du fichier de configuration 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>

Je pensais qu'il était possible d'inscrire un auditeur autour de ces éléments, en particulier JPAProperties, car il semble être l'endroit idéal pour définir les éléments de configuration JPA ...

La spécification JPA parle d'éléments XML d'entités-auditeurs, mais je ne trouve pas le moyen de les injecter dans les éléments Spring disponibles ...

Je suis assez nouveau au printemps, alors j’ai peut-être mal compris quelque chose ... Merci pour votre aide!

Était-ce utile?

La solution

Je suppose que ce que vous recherchez ressemble à ceci (peu importe les auditeurs réels dans cet exemple):

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top