1

Restrictions.inを使用しているときにHibernate Criteriaに問題が発生しています。制限に送信されたリストに値がない場合、クエリが表示されるために期待されるSQL GrammerExceptionがスローされますHIbernate Criteria Restrictions.in

のようなものは、ERR

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

---人物P Hibernateのログにp.id)(中

エラーから選択します*または春のログ...

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がnullまたはidList.size() == 0の場合は、クエリの実行に気をつけないでください。

+0

アロン..ありがとう! – RKodakandla

関連する問題