2009-10-30 5 views
6

J'ai deux webapps, qui sont construits ensemble et fournissent respectivement un accès client et admin à une base de données.Comment puis-je configurer un EntityListener JPA via un fichier de configuration Spring XML?

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

Est-ce que quelqu'un a 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 y avait un moyen d'enregistrer un écouteur autour de ces éléments, en particulier JPAProperties, car il semble être l'endroit idéal pour définir la configuration JPA éléments ...

les spécifications sur les éléments JPA parle XML entité-des auditeurs, mais je ne peux pas trouver un moyen de les injecter dans les éléments de printemps disponibles ...

Je suis assez nouveau au printemps, donc j'ai peut-être mal compris quelque chose .. . Merci de votre aide!

+0

Merci, cela m'a aidé avec des exemples de valeurs jpaProperties. – Barett

Répondre

9

Je suppose que ce que vous cherchez est quelque chose comme ça (jamais l'esprit 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> 
+0

C'est ce que je cherchais, merci! :-) –

Questions connexes