使用MANY

您所在的位置:网站首页 jpa多表 使用MANY

使用MANY

#使用MANY| 来源: 网络整理| 查看: 265

我有两个有多对多关系的类(学生和课程)。 它们的实例可以在没有其他实例的情况下存在。 因此,我删除了JPA注释中的级联属性:@ManyToMany(cascade = CascadeType.ALL)使用MANY_TO_MANY关系删除对象的一个​​实例,没有级联失败

一旦我尝试删除学生,我会收到此错误消息。

我在做什么错?

org.hibernate.exception.ConstraintViolationException:无法 删除:[com.Student#4];嵌套的异常是 javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException:无法 删除:[com.Student#4]

这是休眠输出:

休眠:删除学生在哪里id =?和版本=? 2011-09-19 15:25:10317 [HTTP-8080-3] ERROR org.hibernate.util.JDBCExceptionReporter - 不能删除或更新 父行:外键约束失败 (databasestudent_course,约束FKF8A06F72970A31AF外国 KEY(students)参考文献students(id))

这些都是类的相关部分:

@RooJavaBean @RooToString @RooEntity public class Student{ @ManyToMany private Set courses= new HashSet(); } @RooJavaBean @RooToString @RooEntity public class Course { @ManyToMany(mappedBy = "courses") private Set students= new HashSet(); }

来源

2011-09-19 Hedge

+0

您的意图是什么?如果你是_deleting_“学生”,你一定希望所有课程中的“Set”都被更新,对吗?尝试恢复级联,但使用'CascadeType.REMOVE' – millhouse

+0

您可以在删除学生之前尝试清除课程集合。我不认为级联会在这里帮助 - 级联是删除学生时删除课程。你的情况是什么导致问题是映射表中的行。 – gkamal



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3