以下は、コードに実装しようとしているが、それ以上先に進めないシナリオです。この問題のため、過去3日間でスタックしました。
表A、B、C
表A{
colmnnPKA
カラムテスト;
@OneToMany
@Cascade( { org.hibernate.annotations.CascadeType.ALL, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
@JoinColumn(name = "PKA")
private Collection<TableC> tablec= new ArrayList<TableC>();
}
表B{
列PKB
列test2;
@OneToMany(mappedBy = "tablec",fetch=FetchType.LAZY)
@Cascade( { org.hibernate.annotations.CascadeType.ALL,org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
private List tableC= new ArrayList(); //List is used only for Hibernate mapping
}
表c{
列PKC
@ManyToOne @JoinColumn(name = "PKA")private TableA tableA;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PKB",nullable = false,unique=true)
private TableB tableb;
}
したがって、テーブルCはテーブルAと多対1の関係を持ち、テーブルBとは1対1の関係を持ちます(これは一意によって達成されますが「真」です)
今私の問題は、データを挿入しているときにHibernateが最初にテーブルBデータを挿入し、その後テーブルcデータを挿入しようとして、スローエラーがnull以外の列にNullを挿入できないことです。テーブルCのPkAをnull以外にすると、すべてのデータが適切に挿入されます。.IN休止状態ログでは、SQLステートメントが次の順序
で実行されます。テーブルBテーブルCテーブルA。テーブルCの挿入クエリは最後に実行する必要があります。助けていただければ幸いです。