如何使用Spring Hibernate自动创建审核表而不使用spring.jpa.hibernate.ddl-auto

时间:2019-05-14 11:20:52

标签: spring hibernate hibernate-envers

保存到表后,我需要自动创建审核表。 我添加了"org.hibernate:hibernate-envers:5.4.2"。 最终进入我的gradle文件,并使用@Audited注释了实体。

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

如何获取那些在数据库中自动创建的表。

2 个答案:

答案 0 :(得分:0)

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

您将通过这些源代码控制数据库创建审核表。您的xml changelog文件(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>

答案 1 :(得分:0)

尽管Flyway和LiquiBase可能是处理跨环境迁移数据库增量的最常用和已知的方法,但它们并不是唯一的选择,请参见Hibernate Tools

Hibernate Tools库允许您使用构建时架构生成并将该架构增量写入文件,然后可以在构建或部署过程中使用和集成该文件。