Hibernate Criteria Query API - PullRequest
       5

Hibernate Criteria Query API

1 голос
/ 02 апреля 2009

Я предполагаю, что следующее нет нет (?)

> public Criteria createCritera(Class<?> persistentClass) { 
>     ...//creation of session object etc.
>     session.beginTransaction();
>     Criteria crit = session.createCriteria(persistentClass);
>     session.getTransaction().commit();
>     session.close();
>     
>     return crit; 
}

ИЛИ можно ли использовать объект Critera и манипулировать им, даже если объект Session, используемый для создания Critera, закрыт и текущая транзакция зафиксирована.

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

Используйте DetachedCriteria , если у вас нет активного Session для работы. Позже (скажем, в DAO, где у вас есть активный сеанс для выполнения запроса), вы можете использовать DetachedCriteria # getExecutableCriteria , чтобы получить исполняемый файл Criteria.

3 голосов
/ 02 апреля 2009

Это не будет хорошей идеей ...

Я не уверен в том, что вы пытаетесь достичь, но я думаю, вам стоит взглянуть на DetachedCriteria класс.

Это позволяет создавать запрос критериев, который не связан с сеансом. Если вы хотите выполнить DetachedCriteria, вы должны присоединить его к сеансу, и вы готовы к работе.

0 голосов
/ 10 апреля 2009

Если вы попытаетесь манипулировать Query / Critera после закрытия сеанса, который создал Query / Critera, вы получите исключение HibernateException. Исключение скажет: «сессия закрыта».

Так что, если метод «Отдельно» не применим, я бы порекомендовал (мне) всегда возвращать результат, например.

crit.list();
query.list();

вместо получения экземпляра Critera / Query

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