Spring Boot @GeneratedValue(strategy = GenerationType.IDENTITY)不起作用

时间:2018-08-10 10:38:33

标签: java mysql spring-boot jpa

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

@Entity
public class Student {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long studentId;
   private String studentName;
   // Setters and getters
}

它正在生成studentId,例如1,2,3,依此类推,这意味着它正在按预期的方式递增值。

现在,我删除了数据库student_db,并再次使用相同的名称创建了数据库。然后重新启动我的应用程序。现在我在这里注意到了几件事:

  • 它在我的数据库中创建了一个学生表(如预期)。

  • 然后使用REST API创建了一个条目。 (即创建 完美)

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

我从上次的位置自动生成了studentId,我的意思是studentId是4。我不知道为什么会这样。我的预期结果是studentId应该从1开始与我删除数据库多少次无关。 @GeneratedValue(strategy = GenerationType.IDENTITY)@GeneratedValue(strategy = GenerationType.AUTO)

都在发生这种情况

我正在使用以下内容:

Spring Boot 2.0.0 RELEASE
MySQL 5.7.23

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

spring.jpa.hibernate.ddl-auto = update

我想念东西吗?

2 个答案:

答案 0 :(得分:2)

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

TRUNCATE TABLE table_name; 

然后在重置AUTO_INCREMENT之后运行命令:

ALTER TABLE table_name AUTO_INCREMENT = 1; 

答案 1 :(得分:0)

请尝试

@GeneratedValue(
    strategy= GenerationType.AUTO,
    generator="native"
)
@GenericGenerator(
    name = "native",
    strategy = "native"
)
private Long id;