在Spring Hibernate java项目中使用"Envers"审计表

SST*_*SST 12 java spring hibernate jpa hibernate-envers

我们需要使用envers审核现有表.我们没有hibernate.xml而不是使用application-context.xml.我们通过"liquibase-changeset"创建模式,然后如何通过@Entity和@Audited等注释创建.

我该如何解决这个问题?

我添加了hibernate配置喜欢

<property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
                <prop key="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</prop>
                <!-- <prop key="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</prop> -->
                <prop key="org.hibernate.envers.revision_field_name">REV</prop>
                <prop key="org.hibernate.envers.revision_type_field_name">REVTYPE</prop>
                <prop key="org.hibernate.envers.auditTablePrefix"></prop>
                <prop key="org.hibernate.envers.auditTableSuffix">_HISTORY</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
Run Code Online (Sandbox Code Playgroud)

在我的域类中添加了@Audited注释

@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
Run Code Online (Sandbox Code Playgroud)

但是这个配置删除了我现有的表

例如

Mydatabase
-----------

user
product
order_details
user_role
login
Run Code Online (Sandbox Code Playgroud)

我的数据库中有5个表.运行我的应用程序后,它显示3个表.它不删除创建"审计"表,而是删除现有表.

 Mydatabase
  -----------

  user
  product
  order_details
Run Code Online (Sandbox Code Playgroud)

如何在不触及现有表的情况下创建审计(_HISTORY)表???

Vla*_*cea 1

尝试更改 DDL 策略:

<prop key="hibernate.hbm2ddl.auto">create</prop>
Run Code Online (Sandbox Code Playgroud)

到:

<prop key="hibernate.hbm2ddl.auto">update</prop>
Run Code Online (Sandbox Code Playgroud)

更新DDL 生成策略不应删除任何现有表