2015-10-11 90 views
1

我正在使用彈簧數據。 在我的查詢,我路過一組作爲參數,並使用條款:hql查詢中的空收集參數

(pc.currentClubId in (?1)) 

其中1是該組的佔位符。 當我傳遞一個空盤我得到這個錯誤:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) and (pc.currentClubId in()) 

我怎樣才能解決這個不增加一個假值設定的?

回答

1

空參數集導致無效的sql語句和運行時錯誤。
在執行查詢之前,您需要檢查參數集的大小。 如果是空的,如果你知道,不能有非空的結果,你可以

  1. 簡單不執行查詢。

  2. 動態構建HQL字符串,如果該集合爲空,則將條件替換爲「(1 = 0)」。

  3. 將值添加到無法匹配的參數集中。顯然這是一個笨拙的解決方案。