2013-07-01 34 views
0

我第一次使用jboss envers並且看起來不錯。它似乎也很容易使用。jboss hibernate envers hbm2ddl(EnversHibernateToolTask​​)爲未審計的實體創建審計表

但是我遇到了一個問題:當我使用內置的ddl代從我的註釋類創建ddl時,它爲我所有的類創建審計表,而不僅僅是我想要審計的類。

例如,我有一個一流的,我註解如下:

@Entity 
@Table(name="partner") 
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) 
public class Partner { 

我期待這個類來創建任何partner_aud表,因爲註解。

但是,ddl是爲partner和partner_aud創建的。

我在做什麼錯?

Ant構建配置是這樣的:

<hibernatetool destdir="."> 
<classpath> 
<path refid="toolslib" /> 
    <path location="/Users/matt/workspace/new_Pricing_Tool_PoC/lib/slf4j-api-1.5.8.jar" /> 
    <path location="/Users/matt/workspace/new_Pricing_Tool_PoC/lib/slf4j-log4j12-1.5.8.jar" /> 
    <path location="/Users/matt/workspace/new_Pricing_Tool_PoC/bin" /> 
<fileset dir="new_Pricing_Tool_PoC/lib/"> 
    <include name="*.jar"/> 
    </fileset> 
    <pathelement location="classes"/> 
    <dirset dir="new_Pricing_Tool_PoC/bin"> 
    <include name="**/classes/**"/> 
    </dirset> 
</classpath> 
<jpaconfiguration persistenceunit="pricing" /> 
<hbm2ddl 
    drop="false" 
    create="true" 
    export="false" 
    outputfilename="new_Pricing_Tool_PoC/db/auto-build.sql" 
    delimiter=";" 
    format="true"/> 

另外,我還證實,冬眠真正使用的審計表來存儲過去的合作伙伴對象的修訂。

回答

0

我發現這是由於濫用了@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)註釋。

通過從我的類定義中刪除這個註釋,我解決了這個問題。

當鏈接審計單位到非審計單位,則在該示例中註釋添加到鏈接方法爲:

@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) 
    @ManyToOne(optional=false) 
    public Partner getPartner() { 
     return partner; 
    } 

此方法從Service.java,其中服務採取審計,但合作伙伴沒有。