我有两张桌子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
。如果没有,我该如何设置呢?
答案 0 :(得分:0)
看一下mappedBy OneToMany.mappedBy()
。的JavaDoc:
The field that owns the relationship. Required unless the relationship is unidirectional.
它是Hibernate关键字“inverse”的同义词。
此外,作为变体,您的类B可以使用@ManyToOne(optional = false)
注释声明的A类属性。