我有以下表結構:Hibernate的一對多生成的外鍵
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自動被設置爲由母公司的插入產生的價值呢?
嗨sqrfv,謝謝你的迴應。請參閱Ryan的回答下的評論。謝謝 – Polaris878
在數據庫工作中,Id很少引用多個表。如果父類可以是任何比你可以使用java類層次結構並且讓所有父類型類擴展或實現孩子可以引用的某種結構的東西。如果有關加入表格的問題,請查看多對多關係的示例。這個連接用在第二類(課程)中。 http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-using-annotations-1.html – Noah