我正在开发一个RESTful Web应用程序(使用hibernate和mysql),其规格如下:
与表对应的JAVA类定义为:
class tableA {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@XmlTransient
private int col1A;
private string col2A;
// getters and setters
}
class tableB {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@XmlTransient
private int col1B;
@XmlTransient
@ManyToOne(cascade=CascadeType.REMOVE)
@JoinColumn(name = "col1A", referencedColumnName = "col1A", insertable = false, updatable = false)
private tableA tableAObj;
private string col2B;
// getters and setters
// There is a getter and setter for the col1A field as well.
}
当我从tableA中删除一行时,我假设tableB中引用要删除的行的行应该自己删除(因为CascadeType.REMOVE)。但是,我得到以下异常:
无法删除或更新父行:外键约束失败 (
pack1
。tableB
,CONSTRAINTFK27B8B255168D05
FOREIGN KEY (col1A
)参考tableA
(col1A
))
我做错了什么?
感谢。
更新:
一些变化:我在tableA中添加了注释,如下所示:
@XmlTransient
@OneToMany(cascade=CascadeType.REMOVE, orphanRemoval=true)
private List<Test> tableB;
我仍然得到和以前一样的例外。
我正在使用EntityManger的删除操作删除该行:
em.remove(t)
答案 0 :(得分:0)
知道了,在tableA中添加了mappedBy属性,如下所示:
@XmlTransient
@OneToMany(cascade=CascadeType.REMOVE, orphanRemoval=true, mappedBy = "tableAObj")
private List<TableB> tableB;