【发布时间】:2020-01-16 12:29:23
【问题描述】:
我有两个与一对一关系相关的表:
public class Person {
// some other fields
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "image_id")
private FileInfoModel image;
}
public class FileInfoModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String name;
@NotNull
@Column(name = "size_in_bytes")
private Long size;
// some other fields
}
当我尝试使用存储库删除图像时:repository.deleteById(file.getId()); 我收到以下错误:
更新或删除表“file_info”违反外键约束 “人”表上的“fk_image”。
在从存储库中删除 FileInfo 时,有什么方法可以将 Person 表 image_id 字段设置为 null?我知道我可以设置 person.setImage(null) 并保存它然后删除文件,但我认为可能有更简单的方法,步骤更少。
【问题讨论】:
标签: java hibernate spring-boot jpa spring-data-jpa