2012-09-12 15 views
2

我在一個項目中使用Hibernate,我們有300個實體。在休眠狀態下使用default-lazy = false時,lazy =「proxy」在多對一映射中不起作用

對於許多實體關係,我們不需要延遲加載,所以我們在映射中使用default-lazy=false,以及我們需要延遲加載,我們已經使用lazy=true集合和lazy=proxy爲多對一的關係。

lazy=true適用於收藏品,但lazy=proxy在許多情況下會被忽略。當我查詢與用戶實體具有多對一映射的實體時,Hibernate也加載用戶實體,即忽略lazy=proxy。以下是映射文件的簡短版本。

<hibernate-mapping package="com.test.bean" default-lazy="false"> 
<class name="Vehicle" table="tbl_vehicle" optimistic-lock="version" > 
    <id name="vehicleNo" column="VEHICLE_NO" type="int" node="@id"> 
     <generator class="com.test.TestSequenceGenerator" /> 
    </id> 
    <version name="version" column="version" type="integer" unsaved-value="undefined" generated="never"/> 
    <property name="color" /> 
    <property name="wheel" /> 
    <property name="seat" /> 

    <many-to-one name="user" class="User" embed-xml="false" lazy="proxy" fetch="select"> 
     <column name="user_id" not-null="true" /> 
    </many-to-one> 
</class> 

<class name="User" table="tbl_user" optimistic-lock="version" > 
    <id name="userId" column="user_id" type="int" node="@id"> 
     <generator class="com.test.TestSequenceGenerator" /> 
    </id> 
    <version name="version" column="version" type="integer" unsaved-value="undefined" generated="never"/> 

    <property name="name" /> 

    <set name="vehicles" table="tbl_vehicle" cascade="all" 
      inverse="true" fetch="select" lazy="true"> 
       <key> 
        <column name="user_id" not-null="true" /> 
       </key> 
       <one-to-many class="Vehicle" /> 
      </set> 

</class> 
</hibernate-mapping> 

回答

0

我同意你的看法。 但是,在這裏,類映射用戶不應該有lazy =「proxy」工作的default-lazy =「false」。