2010-05-27 59 views
1

所以我只想要結果的數量而不是結果本身,因此我在hql中使用count。所以,下面是查詢我在哪裏出錯了Hql的計數

(int) Session.CreateQuery("select count(*) from TableName where Lhs=Rhs").UniqueResult(); 

但它給了我錯誤Specified cast is not valid.

那麼,任何機構都可以告訴我如何將計數轉換爲int。

任何幫助,非常感謝。

+0

驗證Lhs和Rhs列的類型 – volody 2010-05-27 16:54:46

+0

您可以在轉換完成之前調試並查看UniqueResult()返回的內容嗎? – 2010-05-27 17:01:06

+0

@jacerhea它給0 – Bipul 2010-05-27 17:03:45

回答

2

嘗試

Convert.ToInt32(Session.CreateQuery ....);

也驗證它是否真的返回一個計數或null。這可能是一種可能性。

感謝

+0

哦,它的工作原理,但它沒有與簡單鑄造工作的任何理由? – Bipul 2010-05-27 17:06:18

+5

它不工作,因爲它是一個「長',而不是'int',而且你也不需要Convert;你可以使用'.UniqueResult ()'。 – 2010-05-27 18:24:55

+0

@Diego:對使用類型轉換器方法有很大的評論,忘記了它在那裏。 – VoodooChild 2010-05-27 20:42:23

0

問題在於您的Casting,因爲它正在返回單個結果(與查詢匹配的實例)或null。 如果將int更改爲空可以發生什麼?

+0

同樣的錯誤:(.. – Bipul 2010-05-27 16:59:48

+0

做到這一點,而不是: 變種臨時= Session.CreateQuery( 「從表名SELECT COUNT(*),其中LHS =右軸」)UniqueResult(); //檢查溫度 的類型。 temp.GetType(); 我有一種感覺,它是一個長而不是int。 – VoodooChild 2010-05-27 17:05:20

1

做到這一點,而不是:

var temp = Session.CreateQuery("select count(*) from TableName where Lhs=Rhs").UniqueResult(); 

//check the type of the temp 
temp.GetType(); 

我有一種感覺,它是一個長期的,而不是一個int。

+0

在這種情況下嘗試將其轉換爲Int64 – VoodooChild 2010-05-27 17:09:30