我有A和B类如下:
@Entity
public class A implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer idd;
public Integer getIdd() { return idd; }
public void setIdd(Integer idd) { this.idd = idd; }
@OneToOne(mappedBy="a")
@Cascade(CascadeType.REMOVE)
//@Transient
private B b;
public B getB() { return b; }
public void setB(B b) { this.b = b; }
private int someField;
public int getSomeField() { return someField; }
public void setSomeField(int someField) { this.someField = someField; }
public A(int someField) { this.someField = someField; }
public A() {}
}
和
@Entity
public class B implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
@OneToOne(targetEntity = db.entityClasses.A.class)
@JoinColumn(name = "idd", nullable = true)
private A a;
public A getA() { return a; }
public void setA(A a) { this.a = a; }
private int ssomeField;
public int getSsomeField() { return ssomeField; }
public void setSsomeField(int someField) { this.ssomeField = someField; }
public B() { }
public B(A a, int ssomeField) {
this.a = a;
this.ssomeField = ssomeField;
}
}
因此,B
与A
一对一关联,B
是所有者。
我删除B
行时,我希望删除A
的相应行。
为此,我在A
上级联了删除。
所有其他 - 这些表的插入,以及A
在B
没有外键引用时从id=5
删除工作正常。
但是,当我想要删除一行时,请说A
B
的行和A
有一个FK引用。到com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`PrjTEMP`.`b`, CONSTRAINT `FK4253917D0F` FOREIGN KEY (`idd`) REFERENCES `a` (`idd`))
那一排,我得到了以下错误:
{{1}}
这段代码有什么问题???
答案 0 :(得分:-2)
正在删除查询。删除()成功了。