首页 > 解决方案 > 如何使用 Spring Hibernate 在不使用 spring.jpa.hibernate.ddl-auto 的情况下自动创建审计表

问题描述

当我保存到表时,我需要自动创建审计表。我补充说"org.hibernate:hibernate-envers:5.4.2"。最后到我的 gradle 文件并使用 @Audited 注释实体。

我不能"spring.jpa.hibernate.ddl-auto"在我的应用程序文件中使用,我需要另一种方法来自动创建表。就像编写 gradle 任务或 Java 代码一样。

我如何在数据库中自动创建这些表。

标签: springhibernatehibernate-envers

解决方案


如果您没有将 hibernate.ddl-auto 设置为 true,则无法自动生成表。正如@Uwe Allner 建议的那样,您应该使用flyway/liquibase。它们很容易与 Spring 集成。如果使用它们,每次启动应用程序时,需要执行的每个 sql 脚本都会执行。

您将通过这些源代码控制数据库创建您的审计表。您将在您的 xml 更改日志文件(liquibase 版本)中有类似的内容,以便审核您的表“table1”:

<changeSet id="3" author="user9353766">
    <createTable tableName="audit_table1">
        <column name="ID" type="bigint">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="PROPERTY1" type="bigint">
            <constraints nullable="false"/>
        </column>
        <column name="REV" type="bigint"></column>
        <column name="REVTYPE" type="int"></column>
    </createTable>
</changeSet>

推荐阅读