2010-07-07 48 views
2

我是NHibernate的新手。 我使用按照我的HBM文件屬性元素...NHibernate - 在屬性元素的Formula屬性中選擇查詢不起作用

<property name="CountryId" length="4" /> 
<property name="CountryForCustomer" 
       formula="(SELECT * 
          FROM SystemCountry 
          WHERE SystemCountry.CountryId = CountryId)" /> 

在這裏,我想從我在其他表時遇到的CountryId得到國家的詳細信息。

屬性「CountryForCustomer」屬於自定義類型「SystemCountry」。

但是這個公式中的查詢不起作用..所以有人請幫我解決這個問題。

在此先感謝....

回答

2

豈不是

SELECT SystemCountry.Country FROM SystemCountry WHERE... 

*如果你想返回整個將從查詢

編輯返回多列對象當時的property元素不是你的朋友在這裏。你想要做的是看看多對一的元素,請注意,這只是一個方法來做到這一點。

<many-to-one name="CmsTemplate" column="TemplateId" .. 

例如, herehere

+0

好,我知道你的意思加載的數據集映射。但我想國家的整個對象使用和不僅一列值..所以如何實現使用HBM文件映射..? – 2010-07-07 07:12:14

+0

多對一是這裏的最佳解決方案。 – 2010-07-07 07:41:38

+0

現在這個解決方案正在工作,但有一個問題....當我最初插入數據或更新數據(使用NHibernate的SaveorUpdate方法)時,它不會帶來與「多對一」元素相關的數據,因爲我已將「插入」和「更新」屬性設置爲false,因爲它們保持爲true給出錯誤 - > IndexOutOfRangeException - >「此SqlParameterCollection的計數= 52的索引52無效。」那麼如何從這裏前進..? – 2010-07-08 09:52:11

0

公式映射不映射從數據庫中它的價值,它的價值有不同於會話