所以我只想要結果的數量而不是結果本身,因此我在hql中使用count。所以,下面是查詢我在哪裏出錯了Hql的計數
(int) Session.CreateQuery("select count(*) from TableName where Lhs=Rhs").UniqueResult();
但它給了我錯誤Specified cast is not valid.
。
那麼,任何機構都可以告訴我如何將計數轉換爲int。
任何幫助,非常感謝。
所以我只想要結果的數量而不是結果本身,因此我在hql中使用count。所以,下面是查詢我在哪裏出錯了Hql的計數
(int) Session.CreateQuery("select count(*) from TableName where Lhs=Rhs").UniqueResult();
但它給了我錯誤Specified cast is not valid.
。
那麼,任何機構都可以告訴我如何將計數轉換爲int。
任何幫助,非常感謝。
嘗試
Convert.ToInt32(Session.CreateQuery ....);
也驗證它是否真的返回一個計數或null。這可能是一種可能性。
感謝
哦,它的工作原理,但它沒有與簡單鑄造工作的任何理由? – Bipul 2010-05-27 17:06:18
它不工作,因爲它是一個「長',而不是'int',而且你也不需要Convert;你可以使用'.UniqueResult
@Diego:對使用類型轉換器方法有很大的評論,忘記了它在那裏。 – VoodooChild 2010-05-27 20:42:23
問題在於您的Casting,因爲它正在返回單個結果(與查詢匹配的實例)或null。 如果將int更改爲空可以發生什麼?
同樣的錯誤:(.. – Bipul 2010-05-27 16:59:48
做到這一點,而不是: 變種臨時= Session.CreateQuery( 「從表名SELECT COUNT(*),其中LHS =右軸」)UniqueResult(); //檢查溫度 的類型。 temp.GetType(); 我有一種感覺,它是一個長而不是int。 – VoodooChild 2010-05-27 17:05:20
做到這一點,而不是:
var temp = Session.CreateQuery("select count(*) from TableName where Lhs=Rhs").UniqueResult();
//check the type of the temp
temp.GetType();
我有一種感覺,它是一個長期的,而不是一個int。
在這種情況下嘗試將其轉換爲Int64 – VoodooChild 2010-05-27 17:09:30
驗證Lhs和Rhs列的類型 – volody 2010-05-27 16:54:46
您可以在轉換完成之前調試並查看UniqueResult()返回的內容嗎? – 2010-05-27 17:01:06
@jacerhea它給0 – Bipul 2010-05-27 17:03:45