2009-12-02 77 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