Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HIbernate.in_Hibernate_Spring Mvc_Sqlexception_Hibernate Criteria_Restrictions - Fatal编程技术网

HIbernate.in

HIbernate.in,hibernate,spring-mvc,sqlexception,hibernate-criteria,restrictions,Hibernate,Spring Mvc,Sqlexception,Hibernate Criteria,Restrictions,在使用限制时,我对Hibernate条件有问题。在。。如果发送到限制的列表中没有任何值,那么它会抛出SQL语法异常,这是预期的,因为查询看起来像 从人员p中选择*,其中p.id位于() Hibernate日志出错--- Spring日志出错 org.hibernate.exception.SQLGrammarException: could not execute query org.hibernate.exception.SQLStateConverter.convert(SQLStateCo

在使用限制时,我对Hibernate条件有问题。在。。如果发送到限制的列表中没有任何值,那么它会抛出SQL语法异常,这是预期的,因为查询看起来像

从人员p中选择*,其中p.id位于()

Hibernate日志出错---

Spring日志出错

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

所以,我应该在这里做些什么更改,以便在列表中没有任何值而不是异常时,我不会从查询中得到任何结果。。。提前谢谢

将整个条件包装在if-then语句中。如果
idList
为null或
idList.size()==0
,甚至不用麻烦运行查询

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