首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HIbernate准则Restrictions.in

HIbernate准则Restrictions.in
EN

Stack Overflow用户
提问于 2011-08-16 14:13:33
回答 1查看 1.9K关注 0票数 1

我在使用Restrictions.in时遇到了Hibernate标准的问题。如果发送到限制的列表中没有任何值,则会抛出SQL GrammerException,这是预期的,因为查询看起来类似于

从Person p中选择*,其中p.id在()

Hibernate日志出错--

代码语言:javascript
复制
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near ')'. at         
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError   
SQLServerException.java:197)

春日志出错..。

代码语言:javascript
复制
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)

造成这种情况的代码是

代码语言:javascript
复制
     criteria.add(Restrictions.in("id", idList)); 

我试过这样做,但它将返回表中的所有值,这与我想要的完全相反。当列表大小为0时,不要返回任何内容。

代码语言:javascript
复制
    if(idList.size()>0  
           criteria.add(Restrictions.in("id", idList)); 

所以,当list中没有任何值而不是异常时,我应该在这里做哪些更改,这样就不会从查询中得到任何结果.提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-16 14:21:26

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7079555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档