ORA-01400:使用Hibernate插入外键时出错

时间:2015-08-05 08:16:59

标签: java oracle hibernate

我有两张桌子View& A使用从B到被叫B的外键。我在FK_A上有 not null 约束。

我有以下两个类:

FK_A

读取工作正常,但当我尝试将A写入数据库时​​,我得到:ORA-01400:无法将NULL插入@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. }

我要插入实体的代码类似于:

("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); 自动填充表FK_A中的B。如果没有,我该如何设置呢?

1 个答案:

答案 0 :(得分:0)

看一下mappedBy OneToMany.mappedBy()。的JavaDoc:

The field that owns the relationship. Required unless the relationship is unidirectional.

它是Hibernate关键字“inverse”的同义词。

另见this question

此外,作为变体,您的类B可以使用@ManyToOne(optional = false)注释声明的A类属性。