私はこれらのクラスを持っています。1対1の関係を削除
@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 | ..その他のフィールド.. |
しかし、私はAのインスタンスを削除しようとすると、私は、
org.hibernate.ObjectDeletedException取得: 削除されたオブジェクトは カスケードによって再保存されます: (削除されたオブジェクトを削除
:[B番号130])の関連からb.setA(null) a.setB(null)
Iは、相互参照にヌルに設定しようとしました
例外はまだスローされます。
私が達成したのは、Aの行を削除してBの外部キーをnullのままにすることですが、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
常に有効なセッションを返します。
これは私の削除のコードがあります。
紛失しているものはありますか?