[英]Hibernate OneToMany generated foreign key
我有以下表結構:
parent(parentId)
child(childId, parentId fk)
然后,我有以下對象:
@Entity
@Table(name = "parent")
public class Parent {
@Id
@GeneratedValue(...)
private String id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "parentId")
Set<Child> children
}
@Entity
@Table(name = "child")
public class Child {
@Id
@GeneratedValue(...)
private String id;
@Column(...)
private String parentId;
}
現在,我創建一個臨時父和子,並將子項添加到父項,然后保存父項:
Parent parent = new Parent();
parent.children.add(new Child());
parentDao.save(parent);
我得到了例外:
org.hibernate.PropertyValueException: not-null property references a null or transient value
我的問題:如何讓子類中的parentId自動設置為父插入所生成的值?
我會重新安排你的類結構如下:
@Entity
@Table(name = "parent")
public class Parent {
@Id
@GeneratedValue(...)
private String id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "parentId")
Set<Child> children
}
@Entity
@Table(name = "child")
public class Child {
@Id
@GeneratedValue(...)
private String id;
@Column(...)
private Parent parent;
}
然后,當hibernate獲取父類並初始化子集時,子類將具有對父類的引用。 然后要獲取parentId,您將調用:
Child c = new Child()....
c.parent.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.