0

簡単なenversの例を機能させようとしています。Javaコードが(明らかに)機能していて、ついにorg.hibernate.tool.ant.EnversHibernateToolTask​​が機能するようになりましたが、バージョン管理データではなく、「通常の」データのSQLのみが出力されます。私は次に何をすべきか困惑しています。

何を含めるのを忘れている可能性がありますか?

出力されるSQLは次のとおりです。{versioning-ddl.sql}

create table Event (
    id bigint generated by default as identity (start with 1),
    date timestamp,
    title varchar(255),
    primary key (id)
);

create table Person (
    id bigint generated by default as identity (start with 1),
    age integer not null,
    firstname varchar(255),
    lastname varchar(255),
    primary key (id)
);

create table PersonEvent (
    eventID bigint not null,
    personID bigint not null,
    primary key (eventID, personID)
);

alter table PersonEvent
    add constraint FK489E5C25F6E47374
    foreign key (personID)
    references Event;

alter table PersonEvent
    add constraint FK489E5C25729F3820
    foreign key (eventID)
    references Person;

履歴テーブル/フィールドが表示されません。これが私のhibernate.cfg.xmlファイルの関連エントリです:

<hibernate-configuration>
   <session-factory>
        ...
     <property name="hibernate.ejb.event.post-insert">org.hibernate.envers.event.AuditEventListener</property>
     <property name="hibernate.ejb.event.post-update">org.hibernate.envers.event.AuditEventListener</property>
     <property name="hibernate.ejb.event.post-delete">org.hibernate.envers.event.AuditEventListener</property>
     <property name="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</property>
     <property name="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</property>
     <property name="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</property>
     <mapping class="com.example.test.hibernate.test1.Event"/>
     <mapping class="com.example.test.hibernate.test1.Person"/>
   </session-factory>
</hibernate-configuration>

およびJavaクラスの関連部分:

 @Entity
 @Audited
 public class Event {
    @Id
    @GeneratedValue
    private Long id;
    private String title;
    private Date date;
    ...
 }


 @Entity
 @Audited
 public class Person {  
   @Id
   @GeneratedValue
   private Long id;

   private int age;
   private String firstname;
   private String lastname;
   ...
 }
4

3 に答える 3

1

必ずエンティティ POJO に「@Audited」という注釈を付けてください。これは、監査テーブルの DDL が作成されていない理由を説明している可能性があります。

于 2010-10-12T16:37:23.977 に答える
0

次のようなバージョン管理データを保存するためのプロパティがないようです。

@Version
private Integer versionNumber;

// getters and setters
...
于 2011-03-02T20:14:14.533 に答える