2014-04-29 34 views
1

我想映射一個自引用表與NHibernate 3.2.0.4000。但是,每當我獲得DomainObject的實例時,都會急切地加載後續版本。我寧願不必爲我的表添加額外的列,但這是一個選項。懶加載一個自引用表

我可以讓NHiberante在不保持雙方關係的情況下不急於加載所有後續版本嗎?

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping assembly="NHibernateHierarchyTest" namespace="NHibernateHierarchyTest" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="DomainObject" table="DOMAIN_OBJECT" lazy="true" > 
     <id name="DomainObjectId" column="DOMAIN_OBJECT_ID"> 
      <generator class="identity" /> 
     </id> 
     <property name="Property"> 
      <column name="PROPERTY" /> 
     </property> 
     <many-to-one name="PreviousVersion" class="DomainObject" > 
      <column name="PREVIOUS_VERSION_DOMAIN_OBJECT_ID" /> 
     </many-to-one> 
     <!--<many-to-one name="SubsequentVersion" class="DomainObject"> 
      <column name="SUBSEQUENT_VERSION_DOMAIN_OBJECT_ID" /> 
     </many-to-one>--> 
     <one-to-one name="SubsequentVersion" class="DomainObject" property-ref="PreviousVersion" /> 
    </class> 
</hibernate-mapping> 

回答

1

one-to-one映射將始終與NHibernate加載猶太人。不知道這是一個功能還是錯誤,但它是如何工作的。如果您需要延遲加載,請使用many-to-oneone-to-many。不是我所知道的最佳答案,但是如果您可以添加新的列...

+1

感謝您的回覆。我是DRY主體的忠實粉絲,但是額外的專欄並不那麼糟糕,因爲NHibernate熱切地加載了幾十個和幾十個對象,每個對象都有自己的一對一對象。這是很多加載。這一定是最好的答案,因爲這是唯一正確的答案,儘管我希望它不是。 –