私はHibernate 3.6を使用しており、次のようなものがあります:
@Entity
public class Parent {
@OnyToMany( fetch = FetchType.LAZY, cascade = { ascadeType.ALL } )
@Cascade( { org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE )
@JoinColumn( name="Parent_ID" )
public List<Child> getChildren() { return children; }
public void setChildren( List<Child> children ) { this.children = children; }
private transient List<TitleMetadataCategory> children;
...
}
@Entity
public class Child {
....
}
関連付けはいくつかの理由で単方向であり、変更したくありません。さらに、孤立した子は存在しないため、CHILD.PARENT_ID が null でないという DB 制約があります。子を削除することを除いて、すべて正常に動作します。私がする時
parent.getChildren().remove(child);
session.saveOrUpdate(parent)
.
それは失敗します。
持ってないから
@ManyToOne( optional=false )
子側で、Hibernate は子を PARENT_ID=NULL で更新しようとし、DB 制約のために失敗します。
それを修正する方法はありますか?