gpt4 book ai didi

java - Hibernate Envers 管理的审计表的主键是什么?

转载 作者:行者123 更新时间:2023-12-01 15:24:38 25 4
gpt4 key购买 nike

我正在使用 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_IDREVISION_TYPE_IDCUSTOMER_ID)

这看起来有些过头了,但 Envers 可能会根据每个插入不同类型的记录(添加修改删除)每次修订的客户。

主键:新列

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

<小时/>

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

最佳答案

the documentation中的例子来看,我的示例中的主键似乎是 (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)***
);

关于java - Hibernate Envers 管理的审计表的主键是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com