使用以下命令生成 mySQL 表:
CREATE TABLE `actors` (
`actorID` INT(11) NOT NULL,
`actorName` VARCHAR(255) NOT NULL,
PRIMARY KEY AUTO_INCREMENT (actorID)
);
映射类:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "actorID", length = 11, unique = true, nullable = false)
private int actorID;
....
Error:
ERROR: Field 'actorID' doesn't have a default value
当尝试创建新的 Actor 对象并将其保存到数据库时会出现此错误。
我尝试过使用其他生成策略,并根据类似问题的答案删除/重建表/整个数据库。到目前为止还没有运气。
感谢您的时间,
塞缪尔·史密斯
编辑:删除表并使用 Shippi 显示的 SQL 语法重新创建它似乎为我解决了问题。
只是尝试使用
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
@Column(name = "actorID")
private int actorID;
这应该可以解决你的问题。如果保存,则将 actorID 保留为空。
还要确保数据库工作正常,尝试编写一条不插入 ID 的插入语句,让我们看看纯插入是否工作。如果直接插入对数据库有效,您可以开始对休眠进行故障排除。
还有一个小问题,我用来在定义列的同一行中定义 PH 和自动增量:
actorID
INT(11) 非空自动递增主键,
但无论哪种方式都应该有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)