我有一个实体类,我用它来表示一个SQL查询的结果。下面显示的类的映射。然而,据我所知,禁止将映射视为存在真正的数据库表 - 事实上并不存在。在这种情况下,数据库中根本没有任何东西代表这个实体。我正在使用它来映射查询,但视图也是如此。是否没有办法指示nhibernate没有映射表示的表格?nhibernate:类映射没有表
<class name="Models.UserTransaction"> <!-- Defaults table name same as Entity even though table doesn’t exist -->
<id name="Id">
<column name="Id" not-null="true" unique="true" />
<generator class="native" />
</id>
<property name="TransType" />
<property name="Date" />
<property name="Amount" />
<property name="Balance" />
</class>
这是查询我的映射,它使用一个用户定义的表。即使我复制的例子出现,我也无法在没有映射的情况下工作。
<sql-query name="UserTransactions">
<query-param name="userId" type="string" />
<return class="Models.UserTransaction" alias="userTx">
<return-property name="TransType" column="TransType" />
<return-property name="Id" column="Id" />
<return-property name="Date" column="TransDate" />
<return-property name="Amount" column="Amount" />
<return-property name="Balance" column="Balance" />
</return>
<![CDATA[
SELECT userTx.[Type] as TransType, userTx.[Id] as Id, userTx.[Date] as TransDate, userTx.[Amount] as Amount, userTx.[Balance] as Balance
FROM dbo.User_AccountStatement(:userId) userTx
]]>
</sql-query>
如果你不想将你的类映射到数据库,那么......你为什么要映射它? :)只是完全删除映射,告诉nHib不映射它,这就是 – 2012-04-30 07:48:24
由于问题说我想将它映射到查询的结果,如报告,所以单向(即数据库到应用程序)映射。对于nhibernate来说,认为把它当作不是双向映射的时候认为它是错误的。 – 2012-04-30 11:21:11
看着另一个查询问题,我再次想到了你的问题。你实际上是在为SQL查询和DTO搜索一些ResultTransformer吗? http://relation.to/Bloggers/Hibernate32TransformersForHQLAndSQL#H-SQLTransformers – jbl 2012-05-02 15:49:39