首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @GeneratedValue(策略= GenerationType.IDENTITY)无效

Spring @GeneratedValue(策略= GenerationType.IDENTITY)无效
EN

Stack Overflow用户
提问于 2018-08-10 10:38:33
回答 2查看 10.7K关注 0票数 2

我创建了一个实体学生,并具有以下属性:

代码语言:javascript
复制
@Entity
public class Student {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long studentId;
   private String studentName;
   // Setters and getters
}

它生成类似于1,2,3等的studentId,这意味着它正在按预期递增值。

现在,我已经删除了我的数据库student_db,并再次以相同的名称创建了数据库。然后重新启动我的application.Now,我在这里注意到了以下几点:

  • 它在我的数据库中创建了一个学生表(如预期的那样)。
  • 然后使用REST创建了一个条目。(这是完美的)

现在是问题还是我不知道是什么?

我是从上次的studentId自动生成的,我的意思是studentId是4,我不知道为什么会这样。我的预期结果是,studentId应该从1开始,不管我丢弃数据库多少次。这种情况发生在@GeneratedValue(strategy = GenerationType.IDENTITY)@GeneratedValue(strategy = GenerationType.AUTO)身上。

我使用的方法如下:

代码语言:javascript
复制
Spring Boot 2.0.0 RELEASE
MySQL 5.7.23

在我的application.properties文件中,我设置了

代码语言:javascript
复制
spring.jpa.hibernate.ddl-auto = update

我在这里错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2018-08-10 10:55:44

这与MySQL本身有关。您可以尝试截断该表,以查看此问题是否消失:

代码语言:javascript
复制
TRUNCATE TABLE table_name; 

然后运行命令来重置AUTO_INCREMENT:

代码语言:javascript
复制
ALTER TABLE table_name AUTO_INCREMENT = 1; 
票数 3
EN

Stack Overflow用户

发布于 2020-03-20 23:55:58

请尝试

代码语言:javascript
复制
@GeneratedValue(
    strategy= GenerationType.AUTO,
    generator="native"
)
@GenericGenerator(
    name = "native",
    strategy = "native"
)
private Long id;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51784659

复制
相关文章

相似问题

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