我有兩個表父和子。我有這兩個表爲母公司數據:休眠一對多檢索
PARENT_ID city
----------------
20 B
22 C
24 D
孩子:
CHILD_ID PARENT_CHILD_JOIN phone
------------------------------------------
2 20 1111
3 20 2222
4 22 3333
我在child.hbm.xml有關這兩個表爲:
<many-to-one name="myMtO" class="com.Parent" fetch="select">
<column name="PARENT_CHILD_JOIN" not-null="true" />
</many-to-one>
父
。 hbm.xml:
<set name="mySet" table="child" cascade="save-update" inverse="true" lazy="true" fetch="select">
<key>
<column name="PARENT_CHILD_JOIN" not-null="true" />
</key>
<one-to-many class="com.Child" />
</set>
保存我是隻保存parent , session.save(parent);
通過這樣做,子表中的PARENT_CHILD_JOIN值將從父表中的PARENT_ID列自動填充。
現在,這裏我想數據獲取:
select c.phone
from child c, parent p
where c.PARENT_CHILD_JOIN = p.PARENT_ID
但它說PARENT_CHILD_JOIN列中不存在的孩子。這是正確的。既然保存,我沒有明確地設置它。
有人可以告訴我如何檢索這些一對多的數據?
謝謝JB。但是,如果我想使用where condtion,因爲我想在查詢中添加where條件選擇c。手機從子c,父p內連接c.myMtO其中p.city ='B',因爲它仍然返回所有結果。 – 2012-03-18 14:52:38
然後給連接的實體一個別名:'從c中選擇c.phone c內部連接c.myMtO父母parent.city ='B'。您是否閱讀過文檔? – 2012-03-18 20:05:36
再次感謝JB的幫助!從文檔中我經歷了where子句部分,並嘗試了一些foo的例子,但沒有成功。但現在它返回正確的結果。謝謝 !!!! – 2012-03-19 11:53:03