2012-04-11 54 views
0

我有一個Slab對象的映射,它具有對對象和SlabPDO SlabInstructions的映射引用。我想做選擇,總是攜帶SlabPDO對象並僅在必要時加載SlabInstructions。有沒有辦法做到這一點?下面映射的例子:僅在必要時加載對象

<id name="Id" column="Id_Slab" type="Int64"> 
    <generator class="Geraes.GLib.GDomainBasis.CustomTableHiLoGenerator, GLib.GDomainBasis" /> 
</id> 

<property name="Mill" column="Mill" type="String" length="2" not-null="true" /> 

<property name="SlabId" column="Slab_Id" type="String" length="20" not-null="true" /> 

<property name="PieceId" column="Piece_Id" type="String" length="20" not-null="true" /> 

<one-to-one name="SlabPDO" class="SlabPDO" cascade="all" fetch="join"/> 

<set name="SlabInstructions" generic="true" inverse="true" lazy="false" cascade="all" fetch="join"> 
    <key column="Id_Slab" /> 
    <one-to-many class="SlabInstruction"/> 
</set> 

祝商祺!

+1

您可以將標題翻譯成英文請。 – ChrisF 2012-04-11 10:32:17

回答

0

關於這兩個映射屬性lazy="true"fetch="select"參考文檔http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html#performance-fetching

這裏是您的解決方案

<set name="SlabInstructions" generic="true" inverse="true" lazy="true" cascade="all" 
    fetch="select"> 
    <key column="Id_Slab" /> 
    <one-to-many class="SlabInstruction"/> 
</set> 
+0

感謝您的回覆! 問題是,在90%的情況下,將需要子對象。在其他情況下,我是否需要放棄加載子對象。最好的方法是什麼? – 2012-04-11 18:56:31

+1

當您編寫查詢時,您可以指定加載子對象('left join fetch')。所以映射可以是懶惰的,以保存10%的情況下不必要的子對象加載。 – bpgergo 2012-04-12 14:19:23