[英]Get the ID of a Child in a cascade=“all” relationship, while adding it to a collection, in Hibernate
我有兩個實體“父母”和“孩子”,它們通過雙向一對多關系鏈接在一起,並且層疊屬性設置為“全部”。 使用以下代碼將Child對象添加到Parent children集合中時,在提交事務之前,我無法獲取持久化的孩子的ID:
Parent p = (Parent) session.load(Parent.class, pid);
Child c = new Child();
p.addChild(c);
// "c" hasn't an ID (is always zero)
但是,當我通過顯式調用session.save()方法來保留子實體時,即使未提交事務,也會立即創建並設置ID:
Child c = new Child();
session.save(c);
// "c" has an ID
有沒有一種方法可以立即獲取子實體的ID,而無需調用session.save()方法?
謝謝
這實際上取決於您使用的ID方案。
如果使用自動遞增字段(例如MySQL,SQL Server),則在保存實體之前不會創建ID。
如果使用序列(例如Oracle),則將在持久化實體時創建ID。
我假設您有一個自動遞增字段,在這種情況下,答案是:不,如果不保留ID,您將無法獲得ID。 話雖這么說,實際上大多數時候您實際上不需要該ID。 與其他實體的關系被隱式處理。 我假設您想要某種URL參數或表單字段的ID? 無論如何,是的,您需要保存它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.