我在两个实体(A 和 B,一个 B 可以与许多 As 关联)之间有一个多对一映射,我需要能够在 A (A.B_ID) 上拥有 B 的 ID,其中特定的 B实体在数据库中不存在。这可能吗?
我们代码的(简化)示例:
@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 保存一个空值,这是不允许的:
Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("MY_SCHEMA"."A"."B_ID")
为澄清起见,如果实体尚不存在,我不希望创建它。我只想在数据库中插入 A 而没有 B。两个表之间没有外键约束。