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