【发布时间】:2015-08-05 08:16:59
【问题描述】:
我有两个表 A 和 B,外键从 B 到称为 FK_A。我对FK_A 有一个not 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.
}
读取工作正常,但是当我尝试将 A 写入数据库时,我得到:ORA-01400: cannot insert NULL into ("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。如果没有,我该如何设置它?
【问题讨论】:
-
如何将
Set<B> b设置为List<B> bList? -
在我的代码内部进行了转换。将在此处进行编辑以更正
-
;)。也许
B来源可能对我们有用。 -
@SurajMenon 您最初是如何创建表格的?我的意思是,在
A类中,b变量使用属性nullable=true进行注释,这意味着该列应该接受空值。