Критерии HIbernate Ограничения - PullRequest
1 голос
/ 16 августа 2011

У меня проблема с критериями Hibernate при использовании Restrictions.in .. Если список, отправляемый ограничению, не содержит никаких значений, он генерирует исключение SQL GrammerException, которое ожидается, поскольку запрос будет выглядеть примерно так:

select * from Person p, где p.id in ()

ошибка журналов Hibernate ---

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

ошибка журналов 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)); 

Итак, какие изменения я должен внести здесь, чтобы не получать результатов из запроса, когда в списке нет значенийвместо исключений ... Заранее спасибо!

1 Ответ

2 голосов
/ 16 августа 2011

Оберните все критерии в оператор if-then. Если idList равно нулю или idList.size() == 0, даже не пытайтесь выполнить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...