生成的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: Field 'actorID' doesn't have a default value
当尝试创建一个新的Actor对象并将其保存到数据库时,会遇到此错误。
我试过使用其他生成策略,并根据类似问题的答案删除/重建表/整个数据库。到目前为止还没有运气。
谢谢你抽出时间,
塞缪尔·史密斯
编辑:删除表并使用shippi显示的SQL语法重新创建它似乎解决了我的问题。
最佳答案
试着用
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
@Column(name = "actorID")
private int actorID;
这应该能解决你的问题。如果保存,则将actorID保留为空。
还要确保DB工作正常,尝试在不插入ID的情况下编写insert语句,并查看纯insert是否工作正常。如果直接插入正在处理数据库,则可以开始对hibernate进行故障排除。
还有一点,我用来定义PH值和自动增量,在定义列的同一行中:
actorID
INT(11)非空自动递增主键,但不管怎样都应该有效。