【问题标题】:How can I configure a JPA EntityListener via a Spring XML configuration file?如何通过 Spring XML 配置文件配置 JPA EntityListener?
【发布时间】:2010-12-11 13:36:13
【问题描述】:

我有两个 web 应用程序,它们是一起构建的,分别提供对数据库的客户端和管理员访问权限。

我想将两个 JPA EntityListener 注册到给定的类,每个应用程序中都有一个。为此,我试图找到一种通过配置每个应用程序的 JPA 上下文的 Spring 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>

我认为有一种方法可以围绕这些元素注册监听器,尤其是 JPAProperties,因为它似乎是设置 JPA 配置元素的地方......

JPA 规范谈到了实体侦听器 XML 元素,但我找不到将它们注入可用 Spring 元素的方法......

我对 Spring 还很陌生,所以我很可能误解了一些东西...感谢您的帮助!

【问题讨论】:

  • 谢谢,这帮助了我示例 jpaProperties 值。

标签: java spring jpa entity listener


【解决方案1】:

我猜你正在寻找的是这样的(不要介意这个例子中的实际听众):

<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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2014-09-22
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多