java - 让一个简单的 envers 示例工作起来很困难 : problem #34

标签 java hibernate hibernate-envers

我正在尝试获取一个简单的 envers工作的例子。我的 Java 代码可以工作(显然),我终于got the org.hibernate.tool.ant.EnversHibernateToolTask to work ,但它只输出“常规”数据的 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;
   ...
 }

最佳答案

请务必使用“@Audited”注释您的实体 POJO。这也许可以解释为什么没有创建审计表的 DDL。

关于java - 让一个简单的 envers 示例工作起来很困难 : problem #34,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033375/

相关文章:

hibernate - 交叉依赖问题:对象引用未保存的 transient 实例,在刷新之前保存 transient 实例

mysql - Hibernate Envers 性能 MySQL

java - 以异步方式实现 Envers 审计的可能性

java - Android接收USB批量传输

java - RxJava : How to run two sequential calls : second depends on first

java - 使用 nativeQuery = true 在 JPA Reposity 中执行 @Query 时出现 ResultSet 错误

java - Hibernate:无法从底层数据库获取连接

java - 不活动 transaciotn : javax. persistence.TransactionRequiredException:执行更新/删除查询

hibernate - 将 Envers 添加到现有数据库

用于跨平台的 Java GUI