gpt4 book ai didi

java - Mysql错误: field 'XXX' doesn't have a default value

转载 作者:行者123 更新时间:2023-11-30 00:01:02 26 4
gpt4 key购买 nike

我已经因为这个错误被阻止了几天,不知道如何解决它。我有一张包含轨道列表的实体 CD。以下是我如何使用 JPA 定义它们:

    @Entity
public class Cd extends Media {

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name="CD_TRACKS",joinColumns={ @JoinColumn(name="CD_ID", referencedColumnName = "ID") },
inverseJoinColumns={ @JoinColumn(name="TRACK_ID",table = "TRACKS", referencedColumnName = "ID") })
private List<Tracks> tracks;

//other fields + getters/setters

}

Tracks 类:

    @Entity
public class Tracks {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@NotNull
private String name;

private int duration;

//getters and setters

}

这是创建表的 CD_TRACKS 脚本:

CREATE TABLE CD_TRACKS(
CD_ID BIGINT NOT NULL,
TRACK_ID BIGINT NOT NULL,
FOREIGN KEY (CD_ID) REFERENCES CD(ID),
FOREIGN KEY (TRACK_ID) REFERENCES TRACKS(ID)
);

当我尝试在数据库中插入新 CD 时,出现此错误:

Caused by: java.sql.SQLException: Field 'TRACK_ID' doesn't have a default value

我尝试设置SET GLOBAL sql_mode='';但它仍然不起作用。我还在 Tracks 表中验证了 id 是否被定义为主并具有 auto_increment。

有人可以给我一些关于如何解决这个问题的见解吗?

感谢您的帮助

[编辑] 例如,我用来保存 CD :

Cd cd = new Cd();
cd.setAvailable(true);
cd.setTitle("The essential of Michael Jackson");

Tracks tracks = new Tracks();
tracks.setName("Billie Jean");
tracks.setDuration(10);
cd.setTracks(Arrays.asList(tracks));
cdCatalogService.saveMedia(cd);

最佳答案

对于来到这里的人来说,我的一个项目也遇到了类似的错误。当我尝试了所有方法时,我没有发现实体有任何问题。我重新创建了数据库,相同的代码库开始工作。这似乎是由数据库上的一些内部问题引起的,该问题不断地在我试图保留的字段之一上标记一些缺失值,而这些字段在我已经修改过的应用程序服务器端。

关于java - Mysql错误: field 'XXX' doesn't have a default value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com