[英]ORA-01400: Error while inserting Foreign Key using Hibernate
我有兩個表A
和B
其中一個外鍵從B
到一個名為FK_A
的外鍵。 我對FK_A
有一個非空約束。
我有以下兩個類:
@Entity
@Table(name = "A")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private long id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_A", nullable = true)
private Set<B> b;
//getters setters etc.
}
@Entity
@Table(name = "B")
public class B {
//attributes, getters setters etc.
}
讀取工作正常但是當我嘗試將A寫入DB時,我得到:ORA-01400:無法插入NULL ("SCHEMA"."B"."FK_A")
我要插入實體的代碼類似於:
@PersistenceContext(unitName = "ab")
private EntityManager em;
A a = new A();
B b = new B();
Set<B> bList = new HashSet();
bList.add(b);
a.setB(bList);
em.persist(a);
現在如果我是正確的,不應該根據它自動生成的id
自動在表B
填充FK_A
。 如果沒有,我該如何設置呢?
看看mappedBy OneToMany.mappedBy()
。 JavaDoc的:
The field that owns the relationship. Required unless the relationship is unidirectional.
它是Hibernate關鍵字“inverse”的同義詞。
另見這個問題 。
另外,作為變體,您的類B可以使用@ManyToOne(optional = false)
注釋聲明的A類屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.