【问题标题】:jboss hibernate envers hbm2ddl (EnversHibernateToolTask) creates audit table for non-audited entitiesjboss hibernate envers hbm2ddl (EnversHibernateToolTask​​) 为非审计实体创建审计表
【发布时间】:2013-06-28 13:02:43
【问题描述】:

我是第一次使用 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 确实在使用审计表来存储合作伙伴对象的过去修订。

【问题讨论】:

    标签: hibernate jboss hibernate-envers hbm2ddl


    【解决方案1】:

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

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

    当将审计实体链接到非审计实体时,您可以将该注释添加到链接方法中,如下例所示:

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

    此方法取自 Service.java,其中 Service 经过审核,但合作伙伴没有。

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 2018-09-19
      • 2015-02-22
      • 2011-07-10
      • 2021-04-01
      • 1970-01-01
      • 2023-03-24
      • 2013-08-27
      • 2012-12-05
      相关资源
      最近更新 更多