Hibernate Envers管理的审计表的主要关键是什么?

我正在使用Hibernate Envers来审计一些实体。 我手动创建了关联的审计表。 但是,我无法确定审核表的主键应该是什么。 例如,考虑用于存储客户的虚拟桌面:

CREATE TABLE CUSTOMER
(
    CUSTOMER_ID   INTEGER,
    CUSTOMER_NAME VARCHAR(100),

    PRIMARY KEY (CUSTOMER_ID)
)

并且您创建审计表:

CREATE TABLE CUSTOMER_REVISION
(
    REVISION_ID      INTEGER,
    REVISION_TYPE_ID INTEGER,
    CUSTOMER_ID      INTEGER,
    CUSTOMER_NAME    VARCHAR(100),

    PRIMARY KEY (???)
)

以下是我考虑的选项:

主键: REVISION_ID

这不可能是主键,因为在同一修订期间可能会修改同一类的多个实体。

主键:( REVISION_IDCUSTOMER_ID

这似乎更有可能,但我不确定Envers是否会为每个客户的每个修订版插入多个记录。

主键:( REVISION_IDREVISION_TYPE_IDCUSTOMER_ID

这看起来似乎有点矫枉过正,但Envers可能会为每个客户每次修订插入不同类型的记录( addmodifydelete )。

主键:一个新列

也许主键必须是包含合成主键的另一列。


Hibernate Envers管理的审计表的真正主键是什么?


从文档中的例子来看,我的例子中的主键看起来是( REVISION_IDCUSTOMER_ID )。 以下是文档中的示例:

create table Address (
    id integer generated by default as identity (start with 1),
    flatNumber integer,
    houseNumber integer,
    streetName varchar(255),
    primary key (id)
);

create table Address_AUD (
    id integer not null,
    REV integer not null,
    flatNumber integer,
    houseNumber integer,
    streetName varchar(255),
    REVTYPE tinyint,
    ***primary key (id, REV)***
);
链接地址: http://www.djcxy.com/p/71549.html

上一篇: What is the primary key of an audit table managed by Hibernate Envers?

下一篇: Populate envers revision tables with existing data from Hibernate Entities