我第一次使用jboss envers它看起来不错。它似乎也很容易使用。
但是我遇到了一个问题:当我使用内置的ddl生成来从我的注释类创建ddl时,它会为我的所有类创建审计表,而不仅仅是我想要审计的那些。
例如,我有一个我注释如下的课程:
@Entity
@Table(name="partner")
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
public class Partner {
由于注释,我希望不会为此类创建partner_aud表。
但是,ddl是为partner和partner_aud创建的。
我做错了什么?
ant build config看起来像这样:
<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"/>
另外,我已经确认hibernate确实使用审计表来存储Partner对象的过去修订版。
答案 0 :(得分:0)
我发现这是由于误用了@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
注释。
通过从我的类定义中删除此注释,我解决了问题。
将审核实体链接到未审核的实体时,您将该注释添加到链接方法,如下例所示:
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
@ManyToOne(optional=false)
public Partner getPartner() {
return partner;
}
此方法取自Service.java,其中服务 已审核,但合作伙伴没有。