簡體   English   中英

使用JBoss,Spring和Maven的Hibernate Envers-不寫審核記錄

[英]Hibernate Envers with JBoss, Spring and Maven - Doesn't write audit record

我正在嘗試與Spring,JBoss和Maven結合使用Hibernate Envers實現。

我有以下內容:

  • spring.version:3.1.0。發布
  • hibernate.version:3.5.0-最終版
  • log4j.version:1.2.14
  • jboss-as-7.1.1.Final
  • MySQL數據庫

在pom.xml中,我添加了所需的hibernate-envers:

    <dependency>    
        <groupId>org.hibernate</groupId>    
        <artifactId>hibernate-envers</artifactId>    
        <version>${hibernate.version}</version>
    </dependency>

在我的Hibernate持久性課程中,我將導入以下內容

import org.hibernate.envers.Audited;

所以看起來

@Entity
@Indexed
@Audited 
@Table(name = "COM_TEST")
public class MyTest extends AbstractReferenceDataObject { ...

我確保有一個帶有相關DB列的COM_TEST_AUD db表以及一個REVINFO db表。

當我運行代碼時,它使用現有的休眠實現來更新COM_TEST中的記錄。 但是沒有任何內容寫入COM_TEST_AUD或REVINFO數據庫表。

我的persistence.xml中具有以下屬性

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
        <property name="hibernate.connection.autocommit" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="validate"/>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.cache.use_second_level_cache" value="true"/>
        <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/>
        <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider"/>
        <property name="hibernate.search.default.indexBase" value="./lucene/indexes"/>
        <property name="hibernate.search.default.batch.merge_factor" value="10"/>
        <property name="hibernate.search.default.batch.max_buffered_docs" value="10"/>
    </properties>

我已經嘗試了幾乎所有我能想到的東西。 我可以看到當我啟動JBoss時,它確實說明了它的需要並罰款COM_TEST_AUD和REVINFO,因此看起來可以正常工作。

我只是不知道為什么它不會寫入數據庫。 沒有任何內容寫入日志文件,並且我將日志記錄設置為:

        <logger category="org.hibernate">
            <level name="DEBUG"/>
        </logger>

我注意到,在下面的JBoss模塊目錄中,它使用了hibernate-envers-4.0.1.Final.jar:

jboss-as-7.1.1.Final\modules\org\hibernate\envers\main

我將項目pom.xml更改為4.0.1.Final,而不是3.5.0-Final,但這沒有什么不同。

有人可以幫忙嗎?

由於您正在使用Hibernate 3.x,因此需要在persistence.xml配置相應的EventListener,如Envers文檔的“ 快速入門”部分所述:

<property name="hibernate.ejb.event.post-insert"
         value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-update"
         value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-delete"
         value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-update"
         value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.pre-collection-remove"
         value="org.hibernate.envers.event.AuditEventListener" />
<property name="hibernate.ejb.event.post-collection-recreate"
         value="org.hibernate.envers.event.AuditEventListener" />

注意:您沒有聲明通過JPA使用Hibernate,但是由於提到了persistence.xml ,因此您似乎在使用JPA。 如果是這種情況,則配置會有所不同,如您在文檔中所見。

如果您使用的是Hibernate 4.x,則不需要此配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM