当 table 中的数据已经存在时,稍后添加 @GeneratedValue

Add @GeneratedValue on a later point, when data in table is already present

手动添加了具有 ID 但对应 table 中的数据的实体,因此从未添加 @GeneratedValue 注释。现在我需要通过代码在此 table 中创建记录,并希望我的 ID 自动递增。 添加 @Id @GeneratedValue(strategy = GenerationType.AUTO) Integer id; 我得到的例外是:

java.sql.SQLException: Field 'id' doesn't have a default value

有没有办法让它工作?

您需要更改数据库中的列定义以添加默认值“AUTO_INCREMENT”。

对于Mysql:

ALTER TABLE yourtable MODIFY COLUMN ID INT NOT NULL AUTO_INCREMENT; 

我认为你还应该将 table 的下一个 AUTO_INCREMENT 值设置为 id + 1 的实际最大值:

ALTER TABLE yourtable AUTO_INCREMENT = new_value;