首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate Envers在主键中包含列,即使列不是主表中的键也是如此

Hibernate Envers是一个开源的持久化框架,用于实现数据版本控制和审计跟踪。它可以在主键中包含列,即使这些列不是主表中的键。

主键是用于唯一标识数据库表中每一行数据的列或列组合。在Hibernate Envers中,主键可以由多个列组成,这些列可以是主表中的键,也可以是其他列。

包含列的主键在某些情况下非常有用。例如,当我们需要跟踪某个实体对象的历史记录时,可以使用Hibernate Envers来自动记录每次修改的详细信息。如果我们希望在审计表中存储某些非主键列的值,那么将这些列包含在主键中就可以实现这个需求。

Hibernate Envers的优势包括:

  1. 数据版本控制:Hibernate Envers可以轻松地跟踪实体对象的历史记录,包括每次修改的详细信息,如修改时间、修改人等。
  2. 审计跟踪:通过使用Hibernate Envers,我们可以方便地记录和审计实体对象的变化,以满足合规性和审计要求。
  3. 简化开发:Hibernate Envers提供了简单易用的API,可以方便地集成到现有的Hibernate应用程序中,减少了开发人员的工作量。

Hibernate Envers适用于需要跟踪数据变更历史和审计跟踪的应用场景,例如金融系统、医疗系统、电子商务平台等。

腾讯云提供了一系列与云计算相关的产品,其中包括数据库、服务器运维、云原生、网络通信、网络安全、音视频、多媒体处理、人工智能、物联网、移动开发、存储、区块链、元宇宙等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JPA 注解学习

DDL片段 (这可能导致无法不同数据库间移植) (7) table 可选,定义对应表(默认为主表) (8) length 可选,长度(默认值255) (9) precision...如果没有@JoinColumn注解,则系统自动处理,主表中将创建连接,列名为:主题关联属性名 + 下划线 + 被关联端主键列名。...该关联表包含指回实体(通过@JoinTable.joinColumns)以及指向目标实体表(通过@JoinTable.inverseJoinColumns)....指向主表外键名:主表表名+下划线+主表主键列名 指向从表定义为唯一约束,用来表示一对多关联关系。...默认值: 关联表名:主表表名 + 下划线 + 从表表名;关联表到主表主表表名 + 下划线 + 主表主键列名;关联表到从表外键名:主表中用于关联属性名+ 下划线 + 从表主键列名。

2.9K10

高级框架-springDate-JPA 第二天【悟空教程】

1.2.1 hibernate 中提供主键生成规则 讲解 Hibernate 主键生成策略之前,先来了解两个概念,即自然主键和代理主键,具体如下: 自然主键: 把具有业务含义字段作为主键...联系人:指的是 A 公司员工。 不考虑兼职情况下,公司和员工关系即为一对多。 4.2 表关系建立 一对多关系,我们习惯把一一方称之为主表,把多一方称之为从表。...在数据库建立一对多关系,需要使用数据库约束。 什么是外? 指的是从表中有一,取值参照主表主键,这一就是外。 一对多数据库关系建立,如下图所示 ?...属性: name:指定外字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许为空。...* 删除主表数据: * 有从表数据引用 * 1、默认情况下,它会把外字段置为 null,然后删除主表数据。 * 如果在数据库表结构上,外字段有非空约束,默认情况就会报错了。

2.5K10

SpringDataJPA笔记(1)-基础概念和注解

@Column设置都将不起作用 JPA规范对@Lob注解并没有说明不能同时标注@Column注解,但是实际使用Hibernate JPA不支持这中标注方式 @Id @Id 标注用于声明一个实体类属性映射为数据库主键...从表根据主表主键(列名为referencedColumnName值),建立一个类型一样主键,列名由name属性定义。...one2one关系,关系维护端主键作为外键指向关系被维护端主键,不再新建一个外 元数据属性说明: name:列名。...joinColumns:定义指向所有者主表,数据类型是JoinColumn数组。...inverseJoinColumns:定义指向非所有者主表,数据类型是JoinColumn数组 @JoinColumn 如果在entity classfield上定义了关系(one2one或one2many

3.9K20

MySql---外复习

是表一个字段,不是本表主键,但对应另一个表主键。定义外后,不允许删除另一个表具有关联关系行。 外主要作用是保持数据一致性、完整性。...如果是后一种情况,则父表与子表是同一个表,这样表称为自参照表,这种结构称为自参照完整性。 必须为父表定义主键主键不能包含空值,但允许在外中出现空值。...也就是说,只要外每个非空值出现在指定主键,这个外内容就是正确。 外数目必须和父表主键数目相同,因为有组合主键和组合外。...外数据类型必须和父表主键对应列数据类型相同。...REFERENCES 主键1 [,主键2,…] 其中:外键名为定义约束名称,一个表不能有相同名称;字段名表示子表被外健约束字段名;主表名即被子表外所依赖名称;主键列表示主表定义主键或者组合

5.2K30

Hibernate框架学习之注解配置关系映射

@JoinColumn用于配置外,name属性用于指定外列名,Hibernate将会在userinfo表增加一个字段用做外。...这里@JoinColumn是不一样,它将生成一个外字段,但不是生成本实体类所代表数据表,而是生成在被关联数据表。...用于指定关联实体类,我们这里新表中会生成一名hobbyid并依赖Hobby实体类主键值。...,需要在两端都使用@OneToOne修饰,我们userinfo端增加了一个外并指向usercode主键。...hibernate通过左连接将根据外值和usercode表主键值连接了两张表,于是我们可以通过usercode主键一次性查到两张表对应记录,最后为我们返回相应实例。

2.2K90

约束

,,让某字段整个表是唯一 PRIMARY KEY #主键约束 FOREIGN KEY #外约束 CHECK #检查约束 8.0才支持,5.7还不支持 DEFAULT #默认值约束 非空约束 建表时候给它约束...主键约束不允许重复,也不允许出现空值 一个表最多有一个主键约束,建立主键约束可以级别创建,也可以表级别创建 主键约束对应表或者多(复合主键) MySQL主键名总是PRIMARY,自己命名了也没有用...FOREIGN KEY约束 外约束 外约束会涉及到主表和从表 主表(父表):被引用表 从表(子表):引用别人表 从表必须引用主表主键或者唯一性约束 创建外时候,如果不给外约束的话...,默认名不是列名,而是自动产生一个外键名,当然也可以指定外约束名 创建表顺序,先创建主表,再创建从表 删表,先删从表,再上主表 从表主表列名字可以不相同,但是数据类型必须一样。...阿里开发规范:不得使用外约束与级联,一切外概念必须在应用层解决 CHECK约束 检查模字段值是否复合要求 MySQL5.7可以支持该约束,但是不起作用。

75820

MySQL常用基础 - 小白必看

作用:表设计时候加入约束目的,就是为了保证表记录完整性和有效性 约束分类: 主键约束(primary key) PK 概念: MySQL主键约束是一个或多个组合,其值能唯一标识表每一行...定义:外约束是表一个特殊字段,经常和主键约束一起使用,对于两个具有关联关系表来说,相关字段主所在表就是主表(父表),外所在表就是从表(子表) 特点(定义一个外时,需要遵守规则): 主表必须已经存在于数据库...,或者是当前正在创建表 必须为主表定义主键 主键不能包含空值,但是允许在外中出现空值,也就是说,只要外每个非空值出现在指定主键,那么这个外内容就是正确 主表表名后面指定列名或列名组合...,那么这个组合必须是主表主键或候选数目必须和主表主键数目相同 外数据类型必须和主表主键数据类型相同 方式一:创建表时候设置外约束 语法: constraint...实现:需要借助第三张中间表,中间表至少包含两个字段,将多对多关系拆成一对多关系,中间表至少有两个外,分别指向原来两个表主键 多表联合查询 介绍:多表查询就是同时查询两个或两个以上表,因为有时候用户查看数据时候

1.2K30

Hibernate框架学习之注解映射实体类

length:指定该属性映射到数据表所能保存数据最大长度,默认是255 默认情况下,我们不使用@Column修饰属性时候,hibernate会自动以该属性名称映射到数据表。...:适用于Oracle子串策略 GenerationType.TABLE:基于辅助表生成主键策略 如果不是使用Oracle做数据库的话,一般我们会使用IDENTITY作为默认主键生成策略。...总的来说,一旦hibernate发现实体类中有集合类型属性需要映射,那么就会为集合属性单独映射出一张表,该表至少有两个字段,一个字段依赖于主表id字段值,新表相同该字段值记录共同组合成为实体类集合属性值...而对于有序集合来说,还应该包含一个字段用于保存每个集合元素集合序号,该序号字段和第一个外依赖字段组合成新表联合主键,唯一标识一条记录。...2、组件属性映射 所谓组件类型就是指我们自定义类类型,某些情况下,实体类包含自定类型也是很常见,那么对于我们自定义类型该如何来映射到数据表呢?

2.9K90

day05_MySQL学习笔记_02

主键用于唯一地标识表每一条记录,可以定义一或多列为主键。      特点:主键数据唯一,且不能为null。   ...) references 主表(主表主键字段);         修改:constraint FK_主表_子表_主表主键字段 foreign key(子表外字段) references 主表(主表主键字段...),         修改:字段 字段类型 foreign key(子表外字段) references 主表(主表主键字段),   -------------------------------...设计从表可以有两种方案:         方式1:t_card表添加外(相对t_user表),并且给外添加唯一约束;即:字段 字段类型 unique,         方式2:给t_card表主键添加外约束...(相对t_user表),即t_card表主键也是

2.1K20

不是吧,阿Sir,MySQL约束你竟然还不懂!

就例如某一叫做 学号,我们就指定约束,这一行不允许为 NULL ,同时我们还能指定它为主键,这样通过学号就可以查找到一条唯一学生记录了,还有例如外知识等等… 总结起来就一句话:约束用来对表数据进行限定...关系模型主键本质其实就是一个候选 理解非常简单,就是能通过这个主键,确定一个唯一记录:例如学号是学生实体候选,一个学号就能确定这个学生到底哪个学生,而我们不选择姓名,这是因为,姓名实际情况...C:具体操作 指定主键约束,使用是 PRIMARY KEY 关键字 一般来说,主键约束主要用在创建表时,指定约束方式有两种: ① 定义后 CREATE TABLE students ( sid...,当设置主动自增后,例如你使用高级语言,操作数据库,向学生表插入一条记录后,即使不给出主键值,主键值也会自动生成出来,并且会在最大主键基础上 + 1,例如 0,1,2 … ,n 最重要一点,主键必须是整型...,姓名,所在系,生日) 课程(课程编号,课程名,授课老师) 选课(学号,课程编号,成绩) 问题:判断各关系候选主键、外 答: 学生(students) 学号可以确认唯一学生是候选,可做主键

54110

【数据库】MySQL进阶二、索引简易教程

一般来说,应该在这些 上创建索引,例如: 经常需要搜索列上,可以加快搜索速度; 作为主键列上,强制该唯一性和组织表数据排列结构; 经常用在连接列上,这 些主要是一些外,可以加快连接速度...通过定义主键约束或者唯一性约束,也可以间接创建索引。主键约束是一种保持数据完整性逻辑,它限制表记录有相同主键记录。创建主键约束时,系统自动创建了一个唯一性聚簇索引。...唯一性索引保证索引全部数据是唯一,不会包含冗余数据。如果表已经有一个主键约束或者唯一性约束,那么当创建表或者修改表时,SQL Server自动创建一个唯一性索引。...然而,如果必须保证唯一性,那么应该创建主键约束或者唯一性约束,而不是创建一个唯一性索引。...当创建唯一性索引时,应该认真考虑这些规则:当在表创建主键约束或者唯一性约束时,SQL Server自动创建一个唯一性索引; 如果表已经包含有数据,那么当创建索引时,SQL Server检查表已有数据冗余性

1.3K90

【MySQL】表约束

,如下: 假设我们需要创建一个班级表,包含班级名和班级所在教室,站在正常业务逻辑: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们设计数据库表时候,一定要在表中进行限制...索引作用相当于图书目录,可以根据目录页码快速找到所需内容。 索引提供指向存储指定数据值指针,然后根据您指定排序顺序对这些指针排序。...数据库使用索引以找到特定值,然后顺指针找到包含该值行。这样可以使对应于表 SQL 语句执行得更快,可快速访问数据库表特定信息。 我们会在后面详细讲索引概念。...id 会报错,因为 id 字段具有唯一: 但是可以插入空: 八、外用于定义主表和从表之间关系:外约束主要定义在从表上,主表则必须是有主键约束或 unique 约束。...当定义外后,要求外数据必须在主表主键存在或为 null.

9910

第13章_约束

主键约束对应着表或者多(复合主键) 如果是多组合复合主键约束,那么这些都不允许为空值,并且组合值不允许重复。... MySQL 5.7 版本,测试步骤如下: 创建数据表包含自增主键 id 字段,语句如下: CREATE TABLE test1( id INT PRIMARY KEY AUTO_INCREMENT...# 6.4 特点 (1)从表,必须引用 / 参考主表主键或唯一约束 ​ 为什么?...,需要先删除从表依赖该记录数据,然后才可以删除主表数据 (6) “从表” 中指定外约束,并且一个表可以建立多个外约束 (7)从表主表被参照列名字可以不相同,但是数据类型必须一样,...)字段名可以与主表名(被参考字段)字段名一样,也可以不一样 -- FOREIGN KEY: 表级指定子表 -- REFERENCES: 标示父表 create table dept

31030

MySQL 约束介绍

主键约束相当于唯一约束+非空约束组合,主键约束不允许重复,也不允许出现空值 一个表最多只能有一个主键约束 主键约束对应着表或者多 如果是多组合复合主键约束,那么这些都不允许为空值,...限定某个表某个字段引用完整性 从表,必须引用/参考主表主键或唯一约束 创建外约束时,如果不给外约束命名,默认名不是列名,而是自动产生一个外键名(例如student_ibfk_1...创建(CREATE)表时就指定外约束的话,先创建主表,再创建从表 删表时,先删从表(或先删除外约束),再删除主表 从表主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致 “...#(从表某个字段)字段名可以与主表名(被参考字段)字段名一样,也可以不一样 -- FOREIGN KEY: 表级指定子表 -- REFERENCES: 标示父表 约束等级 Cascade...方式:父表上update/delete记录时,同步update/delete掉子表匹配记录 Set null方式:父表上update/delete记录时,将子表上匹配记录设为null,但是要注意子表不能为

1.6K41

6-数据类型与常见约束

即使用0填充后,输出内容我们直接也是看不到0,想要看到0作为填充位,需要使用 ZEROFILL关键字,并且这个关键字会默认设置整型为无符号整型 */ # 1....,但是可以为空值 CHECK:【Mysql不支持】检查约束,比如年龄,性别可以用来限制 FOREIGN KEY:外,用于限制两个表关系,用于保证该字段值必须来自主表关联值 (在从表添加外约束...,用于引用主表值) 添加约束时机: 1....# 查看stuinfo表中所有的索引,包括主键,外,唯一 SHOW INDEX FROM stu_info; # 添加表级约束 /* 语法: 各个字段最下面添加 【CONSTRAINT 约束名...主键需要用drop删除,modify不可以删除主键 */ # 外 /* 要求在从表设置外关系 从表类型和主表关联类型要求一致或兼容 主表关联必须是一个KEY(主键/唯一

65110

mysql 索引 主键等概念彻底理清楚

参考文章: Mysql 索引详解和优化 数据库原理-几种数据模型 Mysqlkey和index区别 (讲很合理) MysqlCascade,NO ACTION,Restrict...特例:子表(外所在表)可以为NULL,前面的规律作废(与主表引用无关)。...5、主表 约束 叫:引用、子表约束 叫:外 6、Mysqlkey 、primary key 、unique key 与index区别:前面三个是用户级别的概念,包含constraint、...联合主键就是用多个字段一起作为一张表主键主键主键作用是保证数据唯一性和完整性,同时通过主键检索表能够增加检索速度。 唯一性:可以不唯一,但联合起来必须唯一。...2、 存在歧义概念: key 和 索引index 1、索引—SQL语句里叫 key 错综复杂关系: 1、primary key 与 外 一图理解: ?

2.5K10

数据库之数据表控制语句

一、约束条件相关语句 1、主键约束(主键约束要求主键数据唯一,不允许为空) #创建库 mysql> create database test1; #进入到库 mysql> use test1; #...可以看到其被标识为了主键,但是创建时并没有指定它是主键,而是这一属性基本满足了主键要求,如唯一、不可以为空。...比方学生表有个学生编号(sid),分数表学生(stu)引用学生表学 生编号,此时对于分数表 stu 来说。学生表 sid 就是外。 从表也叫外表,主表也叫主键表、外表,也叫字段。...所以设计时候。就给表1加入一个外,这个外就是表2学号字段。那么这样表1就是主表,表2就是子表。 你主从关系理解颠倒了。你图中,表1的确是主表。...表2是子表,但不是叫做给表1加入一个外,而是给表2加入一个外,表2学号 字段就叫外,它是表1学号字段主键

1.1K40

MySQL外约束使用

什么是外约束MySQL,外约束用于确保两个表之间数据一致性。外约束是一种限制,它将一个表与另一个表相关联。具体来说,它要求一个表某个值必须在另一个表某个存在。...如何创建外约束MySQL,创建外约束需要以下步骤:第一步:创建主表和从表外约束通常涉及到两个表,一个主表和一个从表。主表包含一个或一组,其值将在从表中进行比较。...从表包含,其值必须与主表值匹配。本例,我们将创建两个表:一个名为"orders"主表和一个名为"customers"从表。"...orders"表将包含一个"customer_id",它将用于与"customers"表"customer_id"进行比较。"..."customer_id"主键,"orders"表包含一个名为"order_id"主键和一个名为"customer_id"

4K30

【MySQL】04_约束

主键约束对应着表或者多(复合主键) 如果是多组合复合主键约束,那么这些都不允许为空值,并且组合值不允许重复。 MySQL主键名总是PRIMARY,就算自己命名了主键约束名也没用。...例如:学生表、课程表、选课表:选课表学生和课程要分别参考学生表和课程表,学生表和课程表是主表,选课表是从表。 特点: 从表,必须引用/参考主表主键或唯一约束。为什么?...因为被依赖/被参考值必须是唯一 创建外约束时,如果不给外约束命名,默认名不是列名,而是自动产生一个外键名(例如student_ibfk_1;),也可以指定外约束名。...,然后才可以删除主表数据 “从表”中指定外约束,并且一个表可以建立多个外约束 从表主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...-- FOREIGN KEY: 表级指定子表 -- REFERENCES: 标示父表 create table dept( #主表 did int primary key, #部门编号

2.4K20
领券