生成的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值和自动增量,在定义列的同一行中:
actorIDINT(11)非空自动递增主键,
但不管怎样都应该有效。

10-08 15:59