Como posso configurar um JPA EntityListener através de um arquivo de configuração XML do Spring?

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

Pergunta

Eu tenho dois webapps, que são construídos em conjunto e respectivamente fornecer um cliente e administrador acesso a um banco de dados.

Eu gostaria de registrar dois EntityListeners JPA para uma determinada classe, um em cada aplicativo. Para fazer isso, eu estou tentando encontrar uma maneira de registrar os ouvintes através do arquivo de configuração XML do Spring contexto JPA configure cada app ... e simplesmente não pode encontrar alguma maneira.

Alguém já fez algo semelhante?

Aqui está uma parte do arquivo de configuração 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>

Eu pensei que havia uma maneira de registrar um ouvinte em torno destes elementos, especialmente JPAProperties, uma vez que parece ser o lugar para elementos de configuração conjunto JPA ...

A especificação JPA fala sobre elementos entidade-ouvintes XML, mas eu não consigo encontrar uma maneira de injetá-las na elementos disponíveis Primavera ...

Eu sou bastante novo para Spring, então eu pode muito bem ter entendido mal algo ... Obrigado por sua ajuda!

Foi útil?

Solução

Eu acho que o que você está procurando algo como isto (não importa os ouvintes reais neste exemplo):

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top