1

我在使用Restrictions.in時遇到了Hibernate Criteria問題。如果發送到限制的列表沒有任何值,那麼它會拋出SQL GrammerException,這是因爲查詢會顯示像HIbernate標準限制.in

從人員p

選擇*,其中p.id在Hibernate的日誌()

錯誤---

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ')'. at   
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError 
SQLServerException.java:197) 

ERR或在春季日誌...

org.hibernate.exception.SQLGrammarException: could not execute query 
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92 
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
org.hibernate.loader.Loader.doList(Loader.java:2536) 
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276 
org.hibernate.loader.Loader.list(Loader.java:2271 
org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119 
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716 
org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) 

和代碼是導致它

 criteria.add(Restrictions.in("id", idList)); 

我試着這樣做,但它會在桌子上,這是完全相反的返回所有的值我想要的東西。當列表大小爲0不返回任何..

if(idList.size()>0 
      criteria.add(Restrictions.in("id", idList)); 

那麼什麼樣的變化,我應該在這裏做多,以獲得無論從查詢結果列表時沒有任何值它而不是外在ons ...提前致謝!

回答

2

將整個標準包裝在if-then語句中。如果idList爲空或idList.size() == 0,請不要打擾運行查詢。

+0

感謝亞倫..這工作! – RKodakandla