2011-03-03 2 views
1

나는 Spring과 Hibernate 웹 애플리케이션을 만들고있다. 감사를 위해 Envers를 사용해야합니다.
그러나 응용 프로그램을 실행할 때 감사 테이블 만 생성되지만 감사 테이블에는 데이터가 삽입되지 않습니다.Spring-Hibernate-envers 웹 애플리케이션의 감사 테이블에 데이터가 삽입되지 않는다.

구성 파일 : 나는 서비스 클래스에 @Transactional 주석을 사용하고

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

. 미리 감사드립니다.

+0

안녕하세요 누구든지이 도움이 될 수 있습니다. 나는 envers 1.2.2와 hibernate-core 3.3.2를 사용하고있다. 이것을 위해 를 사용해야합니까? – parbi

답변

0

알아 냈지만 이전에 대답하지 못했습니다. 늦은 다음 결코 더 나은 :-).
<tx:annotation-driven>을 사용해야합니다.
또한 Spring의 트랜잭션 관리 및 Hibernate 템플릿의 saveOrUpdate에 몇 가지 문제가 있다고 생각합니다. 함께 사용하면 saveOrUpdate가 nonUniqueKey 예외를 throw하지만 병합이 잘됩니다.

+0

최대 절전 모드 envrs 4.2.18.Final과 함께 을 사용한 후 동일한 문제가 발생하고 JBoss 트랜잭션 관리자를 사용하고 있습니다. 이 일을 도와 주실 수 있나요? –

관련 문제