首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果数据库表列是用auto_increment设置的,那么为什么我们要使用@generatedValue

如果数据库表列是用auto_increment设置的,那么为什么我们要使用@generatedValue
EN

Stack Overflow用户
提问于 2019-05-16 03:11:20
回答 1查看 38关注 0票数 -1

我真的很难理解为什么is @generatedValue用于自动递增,而表已经提供了auto_increment。能给我解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 03:35:17

@GeneratedValue用于通知JPA提供者特定的字段应该接收生成的值。然后,基于传递给@GeneratedValue注释的GenerationType,提供者将决定如何将值分配给主键,例如,通过将其委托给某个数据库机制。

例如,oracle数据库需要序列来获取生成的主键的值,因此在使用oracle数据库的情况下,您需要将GenerationType.SEQUENCE传递给@GeneratedValue,并且您还必须创建这样的序列。

对于MySQL数据库,您将传递GenerationType.IDENTITY,并在其下面使用MySQL表中的主键列的AUTO_INCREMENT

正如GenerationType.IDENTITY的文档所说:

标识指示持久性提供程序必须使用数据库标识列为实体分配主键。

我们需要所有这些注释,因为JPA只是一个使用关系数据库的抽象,它可以使用不同的数据库,这些数据库使用不同的机制。Hibernate只是JPA的实现之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56156185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档