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_ID
, CUSTOMER_ID
)
这似乎更有可能,但我不确定Envers是否会为每个客户的每个修订版插入多个记录。
主键:( REVISION_ID
, REVISION_TYPE_ID
, CUSTOMER_ID
)
这看起来似乎有点矫枉过正,但Envers可能会为每个客户每次修订插入不同类型的记录( add
, modify
或delete
)。
主键:一个新列
也许主键必须是包含合成主键的另一列。
Hibernate Envers管理的审计表的真正主键是什么?
从文档中的例子来看,我的例子中的主键看起来是( REVISION_ID
, CUSTOMER_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