照会には多くの要素が含まれるように、一対多の関係を持つ照会と要素の 2 つのテーブルがあります。
これがベストプラクティスであるため、外部キー列 ELEMENT.ENQUIRY_ID に Oracle の NOT NULL 制約を適用したいと思います。Inquiry オブジェクトに次のコレクションがあります。
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ENQUIRY_ID", referencedColumnName = "ID")
private Set<Element> elements = new HashSet<Element>();
NOT NULL 制約を適用すると、次のスタック トレースが表示されます。
原因: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("ELEMENT"."ENQUIRY_ID")
したがって、Hibernate は明らかに、親の問い合わせの前に要素のコレクションを永続化し、その後戻って外部キー フィールドで UPDATE を実行しています。
コレクションの外部キー フィールドに NOT NULL 制約を適用する方法はありますか?