簡體   English   中英

ORA-01400:使用Hibernate插入外鍵時出錯

[英]ORA-01400: Error while inserting Foreign Key using Hibernate

我有兩個表AB其中一個外鍵從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM