2010-03-25 54 views
5

我試圖在<loader>元素中使用HQL查詢來加載基於其他實體的實體。使用nhibernate <loader>元素與HQL查詢

我的班級如下

public class ParentOnly 
{ 
    public ParentOnly(){} 
    public virtual int Id { get; set; } 
    public virtual string ParentObjectName { get; set; } 
} 

和映射看起來像這樣

<class name="ParentOnly"> 
    <id name="Id"> 
    <generator class="identity" /> 
    </id> 
    <property name="ParentObjectName" /> 
    <loader query-ref="parentonly"/> 
</class> 

<query name="parentonly" > 
    select new ParentOnly() 
    from SimpleParentObject as spo 
    where spo.Id = :id 
</query> 

,我attemping到頂部映射的是SimpleParentObject,有其自身的映射,並且可以在類被加載和保存沒有問題。

當我打電話session.Get <ParentOnly>(ID),在SQL正確違背了SimpleParentObject表,並且ParentOnly對象實例化(因爲我可以通過建築工步),但只有一個空回來,而不是實例化ParentOnly對象。

我可以使用一個而不是HQL成功做到這一點,但我試圖以獨立於數據庫的方式構建它。

有關如何獲取<loader><query>元素以返回填充的ParentOnly對象的任何想法......?

感謝

馬特

+0

HQL查詢順便說一句,任何人想知道爲什麼人會想用這個。 – 2010-03-26 08:32:31

回答

0

從我的NHibernate的文件的理解,改變了select語句應該可以解決這個問題。

<query name="parentonly" > 
    select ParentObjectNameAS {spo.Name}, Id AS {spo.Id} 
    from SimpleParentObject as spo 
    where spo.Id = :id 
</query> 

來源:由工具產生的http://www.nhforge.org/doc/nh/en/