spring-data-jpa Liquibase - envers在审计表中插入数据

inn6fuwd  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(180)

我正在开发一个spring-boot(2.4.5)应用程序,使用envers来审计数据。当我从头开始使用这个应用程序时,一切都很好。从应用程序中,我可以将数据保存在数据库表中,而envers将审计数据存储在审计表中。
对于数据库CI/CD,我已经配置了Liquibase,执行了一个变更集。数据库创建时没有任何问题。
但是我的问题是当我想在一个变更集中添加insert语句来创建初始数据时,我该如何将这些初始数据添加到审计表中呢?
我的更改集:

-- changeset puser:1659003040757-1

CREATE SEQUENCE HIBERNATE_SEQUENCE START WITH 1 MAXVALUE 9999999999999999999999999999;

-- changeset puser:1659003040757-2
--preconditions onFail:WARN onError:WARN
--precondition-sql-check expectedResult:0 SELECT count(*) FROM USER_TABLES WHERE TABLE_NAME = 'AUDIT_REVISION_ENTITY';

CREATE TABLE AUDIT_REVISION_ENTITY
(
    ID         NUMBER(10, 0) NOT NULL,
    TIMESTAMP  NUMBER(19, 0) NOT NULL,
    IP_ADDRESS VARCHAR2(255 CHAR),
    USERNAME   VARCHAR2(255 CHAR),
    CONSTRAINT SYS_C0017210 PRIMARY KEY (ID)
) TABLESPACE DATAAPP;

-- changeset puser:1659003040757-3

CREATE TABLE USERS
(
    ID            RAW(16)            NOT NULL,
    CREATED_BY    VARCHAR2(255 CHAR),
    CREATED_DATE  TIMESTAMP(6)       NOT NULL,
    MODIFIED_BY   VARCHAR2(255 CHAR),
    MODIFIED_DATE TIMESTAMP(6),
    ACTIVE        NUMBER(1, 0),
    EMAIL         VARCHAR2(200 CHAR) NOT NULL,
    USER_LOGIN    VARCHAR2(20 CHAR)  NOT NULL,
    USER_NAME     VARCHAR2(200 CHAR) NOT NULL,
    USER_PASSWORD VARCHAR2(256 CHAR) NOT NULL,
    USER_ROLE     VARCHAR2(50 CHAR)  NOT NULL,
    USER_SURNAME  VARCHAR2(200 CHAR) NOT NULL,
    CONSTRAINT SYS_C0017439 PRIMARY KEY (ID)
) TABLESPACE DATAAPP;

-- changeset puser:1659003040757-4
CREATE TABLE USERS_AUD
(
    ID            RAW(16)       NOT NULL,
    REV           NUMBER(10, 0) NOT NULL,
    REVTYPE       NUMBER(3, 0),
    CREATED_BY    VARCHAR2(255 CHAR),
    CREATED_DATE  TIMESTAMP(6),
    MODIFIED_BY   VARCHAR2(255 CHAR),
    MODIFIED_DATE TIMESTAMP(6),
    ACTIVE        NUMBER(1, 0),
    EMAIL         VARCHAR2(200 CHAR),
    USER_LOGIN    VARCHAR2(20 CHAR),
    USER_NAME     VARCHAR2(200 CHAR),
    USER_PASSWORD VARCHAR2(256 CHAR),
    USER_ROLE     VARCHAR2(50 CHAR),
    USER_SURNAME  VARCHAR2(200 CHAR),
    CONSTRAINT SYS_C0017442 PRIMARY KEY (ID, REV)
) TABLESPACE DATAAPP;

-- changeset puser:1659003040757-5
ALTER TABLE USERS_AUD
    ADD CONSTRAINT FKLD7CDNHID45YC6535CECSHYOP FOREIGN KEY (REV) REFERENCES AUDIT_REVISION_ENTITY (ID);

-- changeset puser:1659003040757-6
INSERT INTO users (id, user_surname, user_name, user_login, user_password, user_role, email, created_by, created_date, active)
VALUES ('cca76b85f24d490b8df7fd8d91743835', 'APPUSER', 'APPUSER', 'APPUSER', '$2a$10$9wXu9hshOrtZ7RopythgF.XP93XbKtISBzv6QjTGBzq', 'ADMIN', 'app@appsuser.com', 'System', current_date, 1);

我的问题是***变更集如何在envers审计表中插入数据?***

INSERT INTO users_aud ???????????????????????????????```
jc3wubiy

jc3wubiy1#

多亏了@Neeraj的评论,我终于可以用三个插件来修复了。
第一个
对于少量的插入件,这是一个快速的解决方案;对于大量的数据,我认为使用自定义变更集是更好的解决方案。

相关问题