如果ID为null,Spring Crud Repository save()方法将执行插入操作,否则将执行更新操作。我有以下实体bean-
Student {
@Id integer studentId;
....
@OneToMany Set<Project> projects;
@OneToMany Set<Subject> subjects;
}
Project {
@Id integer projectId;
....
@ManyToOne Student student;
}
Subject {
@Id integer subjectId;
....
@ManyToOne Student student;
}
如果我使用spring crud存储库在Project p的一个实例上执行save()操作,它将尝试在p.student已经关联的所有Subject上执行插入。结果,我收到一个主键约束冲突错误。
Spring jpa应该只插入项目,而不是整个学生树及其主题集。
有什么办法吗?
答案 0 :(得分:2)
当您不为关联的实体声明CasCadeType
时,就会发生此问题,而Cascade包含多个Type:
对于您的情况,默认值为 Type.ALL
,您必须根据要求更改cascadeType
。