2011-03-30 23 views
0

我在Nhibernate中使用動態模型。 像這樣:Nhibernate中的動態模型

<class entity-name="Customer"> 

    <id name="id" 
     type="long" 
     column="ID"> 
     <generator class="sequence"/> 
    </id> 

    <property name="name" 
     column="NAME" 
     type="string"/> 

    <property name="address" 
     column="ADDRESS" 
     type="string"/> 

    <many-to-one name="organization" 
     column="ORGANIZATION_ID" 
     class="Organization"/> 

    <bag name="orders" 
     inverse="true" 
     lazy="false" 
     cascade="all"> 
     <key column="CUSTOMER_ID"/> 
     <one-to-many class="Order"/> 
    </bag> 

</class> 

我使用HQL進行查詢。 我不希望執行select * all time。 我怎麼能說Nhibernate哪些字段返回。 但我需要在Idictionary中的結果,其中密鑰是從HBM 謝謝你的名字。

回答

0

你有沒有嘗試過這樣的事情:

IQuery CustomerQuery = session.CreateQuery("select Name from TABLE where Id= :id") 
           .SetInt32("id", 1983056); 
IList result = CustomerQuery.List(); 

所以上面我限制檢索列數和ID相匹配,其中將只檢索1行。

該概念被稱爲「投影」。祝你好運!

+0

IQuery CustomerQuery = session.CreateQuery(「from Customer where Id =:id」).SetInt32(「id」,1983056); IList結果= CustomerQuery.List();我有我的屬性名稱的鍵字典。在你的例子中,我有整數列表。與名稱 – Sveta 2011-03-30 11:43:04

+0

@Sveta,如果你需要一個來自投影查詢的強類型結果,也許你可以使用DTO。 – Benjamin 2011-03-30 14:08:25