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 が実際に監査テーブルを使用して Partner オブジェクトの過去のリビジョンを保存していることを確認しました。

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 に答える