1

Restrictions.in .. 사용시 최대 절전 기준에 문제가 있습니다. 제한에 보낸 목록에 값이 없으면 쿼리가 표시 될 것이므로 예상되는 SQL GrammerException을 throw합니다HIbernate Criteria Restrictions.in

사람의 페이지에서

선택 * 경우 최대 절전 모드 로그에()

오류 p.id ---

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)); 

그래서 무엇을 변경하는 것은 내가 여기해야 ... 아무것도 반환하지 않습니다 내가 원하는 .. 그것은 excepti 대신에 ons ... 미리 감사드립니다!

답변

2

전체 조건을 if-then 문으로 묶습니다. idList이 null이거나 idList.size() == 0 인 경우 쿼리 실행에 신경을 쓰지 마십시오.

+0

감사합니다. 아론 .. 그 작품! – RKodakandla

관련 문제