2011-03-03 132 views
1

我正在研究Spring和Hibernate Web應用程序。我必須使用Envers進行審計。
但是,當我運行應用程序時,只創建審計表,但沒有數據插入審計表。數據沒有被插入到Spring-Hibernate-envers的審計表中webapp

配置文件:

<mvc:annotation-driven/> 

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean>  
<bean name="callbackHandler" class="org.hibernate.ejb.event.EntityCallbackHandler" /> 
<bean name="auditEventListener" class="org.hibernate.envers.event.AuditEventListener" /> 
<bean name="ejb3PostInsertEventListener" class="org.hibernate.ejb.event.EJB3PostInsertEventListener"> 
    <property name="callbackHandler"><ref bean="callbackHandler"/></property> 
</bean> 
<bean name="ejb3PostUpdateEventListener" class="org.hibernate.ejb.event.EJB3PostUpdateEventListener"> 
    <property name="callbackHandler"> 
    <ref bean="callbackHandler" /> 
    </property> 
</bean> 
<bean name="ejb3PostDeleteEventListener" class="org.hibernate.ejb.event.EJB3PostDeleteEventListener"> 
    <property name="callbackHandler"> 
    <ref bean="callbackHandler" /> 
    </property> 
</bean> 
<bean id="sessionFactory" name="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
    lazy-init="false"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="annotatedClasses"> 
    <list>   
     <value>foo.bar.Person</value> 
    </list> 
    </property> 

    <property name="hibernateProperties"> 
    <props> 
     <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
     <prop key="hibernate.show_sql">true</prop> 
     <prop key="hibernate.max_fetch_depth">2</prop> 
     <prop key="hibernate.default_batch_fetch_size">8</prop> 
     <prop key="hibernate.jdbc.batch_size">20</prop> 
     <prop key="hibernate.jdbc.batch_versioned_data">20</prop> 
     <prop key="hibernate.generate_statistics">true</prop> 
     <prop key="hibernate.jdbc.fetch_size">100</prop> 
     <prop key="hibernate.hbm2ddl.auto">update</prop> 
    </props> 
    </property> 
    <property name="eventListeners"> 
    <map> 
     <entry key="post-insert"> 
     <list> 
      <ref bean="ejb3PostInsertEventListener" /> 
      <ref bean="auditEventListener" /> 
     </list> 
     </entry> 
     <entry key="post-update"> 
     <list> 
      <ref bean="ejb3PostUpdateEventListener" /> 
      <ref bean="auditEventListener" /> 
     </list> 
     </entry> 
     <entry key="post-delete"> 
     <list> 
      <ref bean="ejb3PostDeleteEventListener" /> 
      <ref bean="auditEventListener" /> 
     </list> 
     </entry> 
     <entry key="pre-collection-update"> 
     <ref bean="auditEventListener" /> 
     </entry> 
     <entry key="pre-collection-remove"> 
     <ref bean="auditEventListener" /> 
     </entry> 
     <entry key="post-collection-recreate"> 
     <ref bean="auditEventListener" /> 
     </entry> 
    </map> 
    </property> 
</bean> 

我正在使用的服務類@Transactional註解。 在此先感謝。

+0

嗨,任何人都可以幫我這個。我使用的是envers 1.2.2和hibernate-core 3.3.2。我必須爲此使用嗎? – parbi 2011-03-04 13:25:18

回答

0

找出答案,但無法早日回答。晚些時候再好不過了:-)。
爲此,我們必須使用<tx:annotation-driven>
另外我認爲Spring的事務管理和Hibernate模板的saveOrUpdate存在一些問題。當一起使用時,saveOrUpdate引發nonUniqueKey異常,但合併工作正常。

+0

使用與hibernate envrs 4.2.18.Final一起使用後會出現同樣的問題,我正在使用JBoss事務管理器。你能幫我解決這個問題嗎? – 2016-06-09 14:47:27

相關問題