当 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;
手动添加了具有 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;