0

我第一次使用jboss envers,它看起来不错。它似乎也很容易使用。

但是我遇到了一个问题:当我使用内置的 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"/>

另外,我已经确认 hibernate 确实在使用审计表来存储合作伙伴对象的过去修订。

4

1 回答 1

0

我发现这是由于滥用@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)注释造成的。

通过从我的类定义中删除这个注释,我解决了这个问题。

将已审计实体链接到未审计实体时,请将该注释添加到链接方法中,如下例所示:

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

此方法取自 Service.java,其中 Service审计,但伙伴不被审计。

于 2013-07-01T13:53:50.943 回答