İki kimliğe (A ve B, bir B birçok As ile ilişkili olabilir) arasında bire bir eşleme var. B'deki A (A.B_ID) için, söz konusu B varlığının veritabanında mevcut olmadığı. Mümkün mü?JPA Varlık olmayabilecek birebir ilişki
A kodumuzun (basitleştirilmiş) örnek:
@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;
}
// ...
}
Bu temel kurulum hazırda A.B_ID için boş değer kurtarmaya çalışırken ile biter ve bu izin verilmez:
Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("MY_SCHEMA"."A"."B_ID")
için açıklık, eğer varlık zaten mevcut değilse, onun yaratılmasını istemiyorum. Ben sadece db'de A ile B'nin eklenmesini istiyorum. İki tablo arasında yabancı anahtar kısıtlaması yoktur.