簡體   English   中英

在Hibernate中,以層疊=“所有”關系獲取子項的ID,同時將其添加到集合中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM