2012-08-02 80 views
0

我是新來的NHibernate ...我創建了一個SQL查詢(點擊Oracle數據庫),返回定製結果集是這樣的...NHibernate的 - CreateSqlQuery只返回一行

enter image description here

我嘗試將這些結果映射到這樣一個自定義對象......(這個對象不是持續性對象,不包含NHibernate的映射文件) enter image description here

的問題是,當我執行這個sql查詢它給我所有4個記錄的Oracle數據庫,但是如果我從c執行這個頌,我只得到一個記錄(結果只有一個項目)。

我在這裏做任何錯誤嗎?

+0

抱歉生根粉格式化......東西弄亂 – 2012-08-02 13:00:39

回答

0

在NHibernate中啓用SQL日誌記錄並檢查實際執行的問題。

嘗試setting projections以便變壓器知道如何映射數據。

+0

記錄中SQL,然後從日誌中提取的SQL和執行時,仍然在SQL Developer中得到4紀錄。但從代碼運行時只返回1個結果。我不認爲我可以使用項目,我正在執行本機sql# – 2012-08-02 13:17:52

+0

你將不得不使用'addScalar()'方法調用它們。您可以查看[NHForge的文檔](http://nhforge.org/doc/nh/en/index.html#d0e10837)。 – 2012-08-02 13:37:45

0

它的你的Id列,以及缺乏它! NHibernate無法計算出您的ResultSet中的獨特行。因此NHibernate只會填充一級緩存,因爲它將所有四行視爲重複項。

你有兩種選擇: -

  1. 在您的視圖返回一個唯一的ID是一個唯一的ID,雖然是判斷你的模式,它看起來並不可能OR

  2. 您需要在您的視圖地圖類中覆蓋equals和GetHashCode,請參閱此博客enter link description here以獲取更多信息。