当使用Spring数据@OneTomany关系和@Jointable时,如何修复外键约束冲突?
@Entity
@Data
public class Email {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "email_seq")
@SequenceGenerator(name = "email_seq", sequenceName = "email_seq")
private Long id;
@NotNull
private String title;
@OneToMany
@JoinTable(
name = "email_attachment",
joinColumns = @JoinColumn(name = "EMAIL_ID"),
inverseJoinColumns = @JoinColumn(name = "ATTACHMENT_ID")
)
private List<Attachment> attachments;
...
}
@Entity
@Data
public class Attachment {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "attachment_generator")
@SequenceGenerator(name = "attachment_generator", sequenceName = "attachment_seq")
private Long id;
...
}
当我尝试像这样删除附件
时:
attachmentRepository.delete(id)
它会抛出以下错误:
错误:表“Attachment”上的update或delete违反表“Email_Attachment”上的外键约束“Email_Attachment_Attachment_ID_FKEY”详细信息:键(id)=(6)仍然从表“Email_Attachment”中引用。
您还需要使用@ManyToOne
在Attachment
中创建关系。
Attachment.java
@Entity
@Data
public class Attachment {
// ...
@ManyToOne(mappedBy = "attachments")
private Email email;
// ...
}
用户表: 图书目录: 用户模型中的关系: 默认情况下,外键指向主键id。如何使其指向唯一的? 如果只有,是主键,我们可以用第三个参数传递它,并覆盖属性:
我正在使用JPA(Hibernate)并试图用childs和复合键持久化整个新实体,但当持久化childs时,我在键中得到了null。表结构: 映射:
mysql 5.7 外键约束 主表:部门表 从表:员工表 添加外键:从表 dep_id 关联 主表 id >[danger] CASCADE > 级联更新 主表数据更新从表会更新外键 级联删除 主表数据删除,从表会一起删除
问题内容: 我有两个表,和。应该是不言自明的,并且包含所有变量的所有可能选择。 有一个外键,指出了它是哪个变量的选项。有一个外键,指出了当前选择的选项。 我用得到周围的循环关系上,并在“关系。但是,我想添加一个额外的数据库约束,以确保该约束是有效的(即,它所指的是一个引用它的选项)。 我需要的逻辑(假设它代表表中的一行)基本上是: 但是我不知道如何使用SQL,声明式或任何其他方法来构造这种约束。如
无法添加或更新子行:外键约束失败(.,约束外键()引用()) 如果我删除,insert操作将会很好地工作。在将对象插入数据库之前,我检查了这些对象,并确保包含,包含。 用于创建和的SQL脚本为: Hibernate:创建表b(b_id integer not null auto_increment,string_results longtext,a_id integer,主键(b_id)) Hib
问题内容: 为什么没有一个 TRUNCATE 上工作?即使我知道了: 错误1701(42000):无法截断在外键约束中引用的表(。,CONSTRAINT FOREIGN KEY()参考。()) 问题答案: 您不能在上面应用FK约束的表(与相同)。 要变通解决此问题,使用这些解决方案之一。两者都存在破坏数据完整性的风险。 选项1: 消除约束 执行 手动删除现在 无处* 引用的行 * 创建约束 选项2