我与OneToMany的关系如下:
@Entity
public class Curriculum {
@OneToMany(cascade = CascadeType.ALL)
private Set<WorkExperience> workExperiences;
...
下面是WorkExperience实体:
@Entity
public class WorkExperience {
...
当我尝试删除WorkExperience时,如下所示:
@Override
public void deleteWorkExperience(long workExperienceId) {
workExperienceRepository.delete(workExperienceId);
}
我得到以下例外:
org.hibernate.exception.ConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`bignibou`.`curriculum_work_experiences`, CONSTRAINT `FKFA6D4B9F8B68AA0C` FOREIGN KEY (`work_experiences`) REFERENCES `work_experience` (`id`))
我的问题如下:
curriculum_work_experiences
,我如何正确地删除一个WorkExperience?on cascade delete
中手动将fk设置为MySql,它正常工作,但我不确定JPA注释是如何实现我手动完成的.发布于 2014-02-10 01:36:46
在这种情况下,孤儿移除是可行的。您不能通过使用workExperienceId直接删除它,因为它是单向连接表关系,而且数据库受外键引用完整性约束,您必须使用课程实体删除它,您需要获得设置workExperiences的引用并将其从该集合中删除,但首先要确保将orpanRemoval=true元素添加到@OneToMany注释中,如下所示,该属性强制删除联接表中的任何引用。
@Entity
public class Curriculum {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
private Set<WorkExperience> workExperiences;
...
https://stackoverflow.com/questions/21671700
复制相似问题