2 つのエンティティ (A と B、1 つの B を多くの As に関連付けることができます) 間の多対 1 のマッピングがあり、A に B の ID (A.B_ID) を持つ機能が必要です。エンティティがデータベースに存在しません。これは可能ですか?
コードの (単純化された) 例:
@Entity
@Table(name = "A")
public class A implements java.io.Serializable {
// ...
private B b;
// ...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "B_ID")
public B getB() {
return this.b;
}
// ...
}
@Entity
@Table(name = "B")
public class B implements java.io.Serializable {
// ...
private Set<A> as = new HashSet<A>( 0 );
// ...
@OneToMany( fetch = FetchType.LAZY, mappedBy = "b" )
public Set<A> getAs() {
return this.as;
}
// ...
}
この基本的なセットアップは、Hibernate が A.B_ID の null 値を保存しようとすることになり、これは許可されません。
Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("MY_SCHEMA"."A"."B_ID")
明確にするために、エンティティがまだ存在しない場合は、作成したくありません。データベースに B を挿入せずに A を挿入したいだけです。2 つのテーブル間に外部キー制約はありません。