spring - 无法一对多删除或更新父行 HIBERNATE
问题描述
当我尝试删除宠物时出现此错误。这只宠物有来访(孩子),但我在宠物实体中定义了 CASCADE.ALL。任何想法 ?错误:无法删除或更新父行:外键约束失败 ( web_customer_tracker
. visits
, CONSTRAINT visits_ibfk_1
FOREIGN KEY ( pet_id
) REFERENCES pets
( pet_id
))
@Entity
@Table(name = "pets")
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pet_id")
private int pet_id;
.....
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "visit_id")
private Set<Visit> visits;
参观班:
@Entity
@Table(name = "visits")
public class Visit {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "visit_id")
private int visit_id;
@ManyToOne
@JoinColumn(name = "pet_id")
private Pet pet;
....
解决方案
您以错误的方式使用 mappedBy, mappedBy 指的是对面的对象名称
像这样
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pet")
private Set<Visit> visits;
或者如果你想通过JoinColum
试试这个来映射它
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "pet_id")
private Set<Visit> visits;
推荐阅读
- github - 为什么只在已发布的 github 页面上弹出 READ me
- amazon-web-services - 可以在 aws ShellCommandActivity 中将脚本参数与 ScriptUri 一起使用
- asp.net-mvc-5 - 将 C# 控制台应用程序转换为 MVC 5 Web 应用程序
- c# - 对象的父当前实例
- arrays - 使用 swift 将数组保存和检索到用户默认值
- android - Xamarin Android 模拟器奇怪的用户界面
- html - CSS:将背景颜色添加到内联
文本
- qt - pyautogui.screenshot() 在同一个屏幕上使用不同的像素
- reactjs - 同时运行两个 npm 命令
- javascript - 嗨,是否可以使用 javascript/angularjs 和 ionic1 将 Blob/Base64 转换为 fileURI 格式。