Spring XML 구성 파일을 통해 JPA EntityListener를 구성하려면 어떻게해야합니까?

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

문제

함께 구축 된 두 개의 WebApps가 있으며 각각 클라이언트와 관리자에게 데이터베이스에 액세스 할 수 있습니다.

각 앱마다 1 개의 JPA EntityListeners를 주어진 클래스에 등록하고 싶습니다. 이를 위해 각 앱의 JPA 컨텍스트를 구성하는 스프링 XML 구성 파일을 통해 리스너를 등록하는 방법을 찾으려고 노력하고 있습니다.

이미 비슷한 일을 한 사람이 있습니까?

다음은 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>

JPA 구성 요소를 설정하는 장소 인 것처럼 보이기 때문에 이러한 요소, 특히 jpaproperties 주위에 청취자를 등록 할 수있는 방법이 있다고 생각했습니다.

JPA 사양은 Entity-Listeners XML 요소에 대해 이야기하지만 사용 가능한 스프링 요소에 주입하는 방법을 찾을 수 없습니다 ...

나는 봄을 처음 접했기 때문에 무언가를 오해했을 것입니다 ... 도와 주셔서 감사합니다!

도움이 되었습니까?

해결책

나는 당신이 찾고있는 것이 다음과 같은 것 같아요 (이 예에서 실제 청취자를 신경 쓰지 마십시오).

<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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top