2009-12-02 126 views
0

我正在使用oracle和nhibernate。我可以從數據庫表(表中的所有項目)中選擇 對象的列表作爲可查詢,但是當我嘗試使用「linq where子句」從列表中選擇一個項目時 發送 無用查詢到Oracle數據庫。它會得到無效的標識符錯誤。映射類問題的Nhibernate組件

我可以得到整個列表沒有任何錯誤的查詢,它發生在我使用 where子句。

(約查詢和映射文檔的某些信息是如下) 查詢:

SELECT this_.ID as ID33_0_, 
this_.BUNDLEID.........................Where bundleitem1_.ID = :p0 

(bundleitem1_.ID無效)

相關映射部:

<component name="BundleItem" 
class="PromissoryNotes.Server.Data.Bundle, 
PromissoryNotes.Server.Data"> 
    <property name="Id" column="BUNDLEID" type="decimal"></property> 

Copmponent「 Bundle「在另一個xml文檔中有獨立映射,我意識到,當我將Bundle類更改爲另一個未映射的類時,它可以工作。問題是關於映射類作爲Bundle的組件。什麼解決方案,任何想法?

回答

0

我看,這是一個NHibernate的錯誤。映射類不能用作組件。

1

你確定這應該真的被映射爲一個組件嗎?這應該是一個多對一的映射嗎?

也許是這樣的:

<many-to-one name="BundleItem" column="BundleId" cascade="save-update" /> 
+0

感謝您的想法,但它不能像這樣,它必須是組件。 – NetSide 2009-12-23 08:23:07