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

Jpa id生成策略,@id默认为auto,MySQL默认为IDENTITY,但是我发现生成了一个hibernate_sequence表,为什么?

JPA(Java Persistence API)是Java EE的一部分,用于简化数据库操作。在JPA中,@Id注解用于标识实体类的主键字段,而@Id注解的默认生成策略是auto。

对于MySQL数据库,默认的主键生成策略是IDENTITY。当使用IDENTITY策略时,JPA会自动创建一个名为hibernate_sequence的序列(sequence)表,用于生成主键的值。

为什么会生成hibernate_sequence表呢?这是因为IDENTITY策略需要依赖数据库的自增特性来生成主键值。而在MySQL中,自增特性是通过序列来实现的。因此,JPA会自动创建一个序列表来管理主键的生成。

hibernate_sequence表的结构通常很简单,只包含一个名为next_val的字段,用于存储下一个可用的主键值。每次插入新记录时,JPA会从该表中获取下一个主键值,并将其分配给实体对象的主键字段。

需要注意的是,生成的hibernate_sequence表是由Hibernate框架自动创建和管理的,不需要手动操作或干预。在实际应用中,我们可以忽略该表的存在,只需关注实体对象的主键生成即可。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云Serverless MySQL。

  • 腾讯云数据库MySQL:腾讯云提供的稳定可靠的MySQL数据库服务,支持自动备份、容灾、监控等功能,适用于各种规模的应用场景。详情请参考:腾讯云数据库MySQL
  • 腾讯云Serverless MySQL:腾讯云提供的无服务器MySQL数据库服务,根据实际使用情况自动弹性扩展和收缩,无需预置资源,按实际使用量付费。详情请参考:腾讯云Serverless MySQL
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【快学springboot】7.使用Spring Boot Jpa

spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.database-platform主要是指定生成名的存储引擎为...InnoDBD show-sql 是否打印出自动生成的 SQL,方便调试的时候查看 spring.jpa.hibernate.ddl-auto参数的作用主要用于:自动创建更新验证数据库结构,有五个值...create: 每次加载 hibernate 时都会删除上一次的生成,然后根据你的 model 类再重新来生成,哪怕两次没有任何改变也要这样执行,这就是导致数据库数据丢失的一个重要原因。...create-drop :每次加载 hibernate 时根据 model 类生成但是 sessionFactory 一关闭,就自动删除。...启动springboot项目,自动生成数据库 这里生成了User,可以看下它的结构: 这里还生成了一个hibernate_sequence: 主要是因为设置了主键的值策略为GenerationType.SEQUENCE

16010

@DataJpaTest 进行测试的坑

如果你的不进行配置的话,你会发现你插入的数据没有办法在数据库中出现。 解决办法就是在方法中,提供 @Commit 注解。 然后再对数据库中的数据进行校验,这个时候数据是不会回滚的。... hibernate_sequence 这是因为我们在数据库实体类配置的时候,没有指定主键策略。 在默认情况使用的是 Auto。...如果使用 Auto,Hibernate 将会使用 Oracle 的方式来自增的。...如果需要使用 Mysql 的话,你的实体类需要将主键策略修改为: @GeneratedValue(strategy = GenerationType.IDENTITY) 因为我们实体类使用了继承 AbstractPersistable...将参数设置为 false spring.jpa.hibernate.use-new-id-generator-mappings=false 这样就会对主键的策略进行修改了,我们就可以避免上面的这个问题了

73540

【快学springboot】7.使用Spring Boot Jpa

spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true 复制代码 spring.jpa.database-platform主要是指定生成名的存储引擎为...InnoDBD show-sql 是否打印出自动生成的 SQL,方便调试的时候查看 spring.jpa.hibernate.ddl-auto参数的作用主要用于:自动创建更新验证数据库结构,有五个值...create-drop :每次加载 hibernate 时根据 model 类生成但是 sessionFactory 一关闭,就自动删除。...启动springboot项目,自动生成数据库 image.png 这里生成了User,可以看下它的结构: image.png 这里还生成了一个hibernate_sequence: image.png...主要是因为设置了主键的值策略为GenerationType.SEQUENCE,它是根据这个来实现自增的。

3.3K40

SpringBoot系列教程JPA之指定id保存

原文链接: 191119-SpringBoot系列教程JPA之指定id保存 前几天有位小伙伴问了一个很有意思的问题,使用 JPA 保存数据时,即便指定了主键 id但是新插入的数据主键却是 mysql...本文将介绍一下如何使用 JPAAUTO 保存策略来指定数据库主键 id I....) 上面是执行的 sql 日志,注意插入的 sql,是没有指定 id 的,所以新增的记录的 id 就会利用 mysql 的自增策略 当我们的 db 中存在 id 为 20 的记录时,再次执行,查看日志发现实际执行的是更新数据...GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长型) GenerationType.AUTO 主键由程序控制 从上面四种生成策略说明中,很明显我们要使用的就是 AUTO...IdentityGenerator策略生成主键(而这个主键生成策略,正好是GenerationType.IDENTITY利用数据库自增生成主键的策略) 接下来我们再次测试插入 // 使用自定义的主键生成策略

2.9K50

Spring Data JPA(一):@id @generatedvalue设置初始值

SpringDataJPA是Spring Data的一个子项目,通过提供基于JPA的Repository极大的减少了JPA作为数据访问方案的代码量,你仅仅需要编写一个接口集成下SpringDataJPA...@Id 声明此属性为主键。该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...TABLE:使用保存idIDENTITY:identitycolumn SEQUENCR :sequence AUTO:根据数据库的不同使用上面三个 @Column 声明该属性与数据库字段的映射关系...name 声明该主键生成策略的名称,它被引用在@GeneratedValue中设置的“generator”值中; table 声明生成策略所持久化的名; pkColumnName 声明在持久化中...,该主键生成策略所对应键值的名称; valueColumnName 声明在持久化中,该主键当前所生成的值,它的值将会随着每次创建累加; pkColumnValue 声明在持久化中,该生成策略所对应的主键

1.9K20

一篇 JPA 总结

@Id标注也可置于属性的getter方法之前 **@GeneratedValue** @GeneratedValue 用于标注主键的生成策略,通过 strategy 属性指定。...默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identityMySQL 对应 auto increment IDENTITY:采用数据库 ID自增长的方式来自增主键字段...,Oracle 不支持这种方式 AUTOJPA自动选择合适的策略,是默认选项 TABLE:通过产生主键,框架借由模拟序列产生主键,使用该策略可以使应用更易于数据库移植。...表示该属性并非一个到数据库的字段的映射,ORM 框架将忽略该属性 如果一个属性并非数据库的字段映射,就务必将其标识为 @Transient,否则ORM 框架默认为其注解 @Basic,例如工具方法不需要映射...(记得添加主键生成策略) ?

5.6K20

Spring Boot---(13)Spring Boot 使用JPA访问数据库

spring.jpa.hibernate.ddl-auto=update spring.jpa.database=mysql spring.jpa.generate-ddl=true spring.data.jpa.repositories.enabled...=true ddl-auto的四种状态: create: 每次加载hibernate时都会删除上一次的生成,然后根据你的model类再重新来生成,哪怕两次没有任何改变也要这样执行,这就是导致数据库数据丢失的一个重要原因...create-drop :每次加载hibernate时根据model类生成但是sessionFactory一关闭,就自动删除。... Entity中不映射成列的字段得加@Transient 注解 这是主键的生成策略,四种方式: JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.        ...IDENTITY:主键由数据库自动生成(主要是自动增长型)         AUTO:主键由程序控制。

2.1K20

JPA实体类中的注解

用于表示该属性作为ID主键 @GeneratedValue   主键生成策略,@GeneratedValue(strategy=GenerationType.AUTO)表示主键自增长由实现jpa的框架来控制...,例如我们用hibernate实现的就是有hibernate来控制   GenerationType总共有四个:   AUTO:   TABLE:由一个来维护主键,这个表记录上一次生成的主键,然后+1...@Id @Id设置对象表示符,标识的实体类的属性映射对应中的主键 @GeneratedValue 设置标识符的生成策略,常与@Id一起使用  参数:strategy指定具体的生成策略  方式一:@...方式二:@GeneratedValue(strategy = GenerationType.IDENTITY)指定“自动增长”策略,适用于MySQL;  方式三:@GeneratedValue(strategy...@ManyToMany注解需要指定mappedBy属性,指向targetEntity的集合属性名称  利用ORM工具自动生成除了User和Book外,还自动生成了一个User_Book,用于实现多对多关联

3.8K70

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

规范中对@Lob注解并没有说明不能同时标注@Column注解,但是在实际使用中Hibernate JPA不支持这中标注方式 @Id @Id 标注用于声明一个实体类的属性映射为数据库的主键列。...默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identityMySQL 对应 auto increment。...在 javax.persistence.GenerationType 中定义了以下几种可供选择的策略IDENTITY:采用数据库 ID自增长的方式来自增主键字段,Oracle 不支持这种方式;...AUTOJPA自动选择合适的策略,是默认选项; SEQUENCE:通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式 TABLE:通过产生主键...生成器可以在类、方法或者属性上定义 生成器是为多个实体类提供连续的ID值的,每一行为一个类提供ID值,ID值通常是整数 元数据属性说明: name:生成器的唯一名字,可以被Id元数据使用。

3.9K20

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

JPA 第二天 第1章 JPA 中的主键生成策略 通过annotation(注解)来映射实体类和数据库的对应关系,基于annotation的主键标识为@Id注解, 其生成规则由@GeneratedValue...其中:JPA 提供的四种标准用法为 TABLE,SEQUENCE,IDENTITY,AUTO。由于我们使用的是 hibernate 实现,它也支持 hibernate 中定义的生成规则。...1.1 JPA 中的四种生成规则 1.1.1 IDENTITY:主键由数据库自动生成(主要是自动增长型) 用法: @Id @GeneratedValue(strategy = GenerationType.IDENTITY...NUMBER NOT NULL, PRIMARY KEY(id) ) 1.1.4 AUTO:由以上三个选择一个(默认是 TABLE) auto 策略JPA 默认的策略,在 hibernate...使用 AUTO 策略就是将主键生成策略交给持久化引擎 (persistence engine) 来决定,由它自己从 Table 策略,Sequence 策略Identity 策略三种策略中选择最合适的

2.5K10

全AI生成「芭本海」病毒式疯转!Midjourney、Gen-2版联手拍成,震撼堪比好莱坞原片

新智元报道 编辑:编辑部 【新智元导读】这段Midjourney和Gen-2生成的「芭本海」预告片火了!疯狂传播后,网友们惊呼:这是原片吧?...CR认为,人们可以在一部电影中观看到两部电影时,为什么还要再分别观看这两部电影呢? 对于「芭本海」,CR的推荐语是这样的: 「她变成了死亡本身,她是世界的毁灭者。...这位说:曾经一想到自己会变老,就很沮丧,但是现在,等我变老时,就能用AI制作电影,看起来完全像一部真正的电影。这可太酷了! 毫不意外,继续有人呼吁重拍《权力的游戏》最后一季。...他评论道:「喜欢用简单的人工智能创作工具来巧妙地编织一个有核心的故事,这远远胜过堆砌起花里胡哨的剧情。...创作者们认为这没什么大不了的,很简单,但是就像barbenheimer一样,故事高于一切,而他们没有抓住真正的重点。」

23810
领券