我有一個實體類,我用它來表示一個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