java - 在 Spring Hibernate java 项目中使用 "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>

在我的域类中添加了@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/

相关文章:

spring - 如何在 apache 基准测试工具中限制每秒请求

java - 如何使用spring websocket向自定义用户发送自定义消息?

spring - java.lang.ClassNotFoundException : org. a

spring - java 9模块从A和B读取包X

spring - Spring Boot 2 中的 EmbeddedServletContainer

java - Spring Security 3 - 总是返回错误 302

java - Spring MVC : Resolving the view based on Us

java - 使用 Spring JavaConfig 和 @Autowired 注入(inject

java - 如何将 bean 注入(inject)作用域实现?

java - spring mvc 表单 :select tag