我们需要使用 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>
在我的域类中添加了@Audited 注释
@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
但是这个配置删除了我现有的表
例如
Mydatabase
-----------
user
product
order_details
user_role
login
我的数据库中有 5 个表。运行我的应用程序后,它显示 3 个表。它不是创建“审计”表,而是删除现有表。
Mydatabase
-----------
user
product
order_details
如何在不触及现有表的情况下创建审计(_HISTORY)表???
最佳答案
在 Liquibase 变更集中定义审计表定义,就像对任何其他表一样。
跳过 spring-hibernate ocnfiguration 中的 hibernate.hbm2ddl.auto
属性。这将指示 hibernate 不对架构做任何事情。
保持其余配置不变,这应该可以工作。
只需确保架构和配置中的审计表名称匹配即可。
链接到文档,详细说明如果架构是 generated,它是如何完成的使用 Ant
关于java - 在 Spring Hibernate java 项目中使用 "Envers"审计表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981361/