java - Spring Boot @GenerateValue(strategy = GenerationType.IDENTITY) 不起作用

标签 java mysql spring-boot jpa

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

@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 开始,无论我删除数据库多少次。 @GenerateValue(strategy = GenerationType.IDENTITY)@GenerateValue(strategy = GenerationType.AUTO)

都会发生这种情况

我正在使用以下内容:

Spring Boot 2.0.0 RELEASE
MySQL 5.7.23

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

spring.jpa.hibernate.ddl-auto = update

我在这里缺少什么?

最佳答案

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

TRUNCATE TABLE table_name; 

并在重置 AUTO_INCRMENT 后运行命令:

ALTER TABLE table_name AUTO_INCREMENT = 1; 

关于java - Spring Boot @GenerateValue(strategy = GenerationType.IDENTITY) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51784659/

相关文章:

mysql - 从 unix 时间戳 mysql 选择最近 7 天

php - 在 MYSQL 中连接字符串

hibernate - 创建函数 - UncategorizedScriptException - ArrayIndexOutOfBoundsException

java - 从 "messy"Java 字符串中提取多种数据类型

java - 在 Linux 中的 SWT Java 应用程序中嵌入 CKEditor

java - 提交响应后无法转发 Servlet 错误

java - 如何在 IntelliJ 中配置 Spring Boot Run Configuratipon

java - 网络蜘蛛需要帮助

mysql - 编辑另一列时更新一个 mysql 列

java - 如何将 Spring Boot 应用程序转换为 Eclipse 中的动态 Web 项目?