2012-09-27 42 views
0

即時通訊設法運行一個hql查詢會加劇(總和)在一個特定的帳戶上進行的交易數量,我不需要一個組,因爲我的where子句有一個特定的帳戶過濾器(其中帳戶=:帳戶)hibernate - 使用'有'沒有hql組group by子句

但是,我想,只有當它小於/大於某個給定值時才返回聚合值。 時,即時通訊將'有「按組」聊天室沒有where子句得到一個錯誤之後 - 意外的標記:如何有

在本地SQL我成功加入「具有」不按

任何想法使其與hql一起工作?

非常感謝

+0

而你不想分組的原因是,你還想返回其他不可分組的列嗎?服務器應該如何知道哪一行的列將返回?隨機挑選一個? – lilalinux

+0

沒有組是由真的模糊, – Elbek

+0

我需要返回只有一列,聚合的一個,所以應該沒有問題,服務器找出要返回什麼 我使用oracle – yaarix

回答

0

之所以數據庫不要讓你不分組的和非聚集混用分組的列是,對於非分組/非聚合列那就要選擇一個行的每組的價值,但不知道如何選擇一個。

如果你不在乎,那麼你可以把它放開,如果因爲它們都一樣而沒有關係,那麼也可以由它們組合。

+0

不知道我跟着。 即時只返回一列,合計一列 – yaarix

+0

長話短說:沒有GROUP BY,您不能擁有HAVING。這隻適用於有問題的數據庫。無論如何,你爲什麼不想分組? – lilalinux

+0

我只想爲一個特定的帳戶ID添加一列(讓我們說交易)。所以如果在我的where子句即時消息寫在哪裏帳戶=:帳戶,我沒有用任何東西 我也想返回0當帳戶ID不在我的表上(所以即時通訊使用權限加入帳戶表使用合併) 感謝您的回覆 – yaarix

0

它不是HQL,但如果你有本地查詢,然後運行它想:

Query query = session.createSQLQuery("select, *** ,... blah blah") 
//set If you need 
query.setParameter("myparam", "val"); 
List result = query.list(); 
0

在我的眼裏,這是無稽之談。 '有'是爲'group by'結果的條件完成的。如果你不分組,那麼它沒有多大意義。

我會說HQL不能這樣做。 Hibernate程序員可能沒有想到這種情況,因爲他們認爲這並不重要。

無論如何,你不需要它。

如果它是一個簡單的查詢,那麼你可以在你的java代碼中決定是否需要結果或者你是否需要它。

如果它是在一個子選擇中,那麼你可以用主選擇中的where條件解決問題。

如果您認爲這確實是必要的,那麼請您給出一個更具體的例子。

+0

我想它並不那麼重要,只是想知道它是否可以做到。即時通訊運行一個hql相對於另一個對象,所以一段時間即時通過組和有時不。所以,如果沒有使用有沒有組時,我將不得不檢查我的java代碼中的值,當我將使用組生病必須添加一些邏輯到我的java代碼不檢查返回的值。 不是什麼大事,但我想我可以避免它 – yaarix