我有这些类。删除一对一的关系
@Entity
@Table(name ="a")
class A{
private Integer aId;
private B b;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_a")
public Integer getAId() {
return aId;
}
@OneToOne(mappedBy = "a", cascade={CascadeType.ALL})
public B getB() {
return b;
}
}
@Entity
@Table (name= "b")
class B{
private A a;
@OneToOne
@JoinColumn(name = "id_a")
public A getA() {
return a;
}
}
和表如下所示:
A)| id_A | ....其他字段... |
B)| id_B | fk_id_A | ..其他字段.. |
但是,当我尝试删除的实例,我得到的,
org.hibernate.ObjectDeletedException: 删除对象将被重新保存由 级联: (删除删除对象从协会)B#130]
我试过交叉引用设置为null:
b.setA(null)
a.setB(null)
但异常仍然被抛出。
我所完成的所有工作是删除A中的一行,并将B的外键保留为空,但是当我试图删除B时,得到相同的错误。
这是我的删除代码:
public static void delete(Object object) throws Exception {
Transaction tx = getSession().beginTransaction();
try {
getSession().delete(object);
tx.commit();
} catch (Exception ex) {
tx.rollback();
getSession().close();
throw ex;
}
}
getSession
总是返回一个有效的会话。
有什么我失踪?