Hibernate条件查询API

Hibernate条件查询API,hibernate,Hibernate,我假设以下是一个否定(?) >公共条件createCritera(类persistentClass){ >…//创建会话对象等。 >session.beginTransaction(); >Criteria crit=session.createCriteria(persistentClass); >session.getTransaction().commit(); >session.close(); > >返回暴击; } 或者,即使用于创建Critera的会话对象已关闭且当前事务

我假设以下是一个否定(?)

>公共条件createCritera(类persistentClass){
>…//创建会话对象等。
>session.beginTransaction();
>Criteria crit=session.createCriteria(persistentClass);
>session.getTransaction().commit();
>session.close();
>     
>返回暴击;
}

或者,即使用于创建Critera的会话对象已关闭且当前事务已提交,也可以使用和操作Critera对象。

这确实不是一个好主意

我不确定您想要完成什么,但我认为您应该看看
DetachedCriteria


这允许您创建未链接/连接到会话的条件查询。当您想要执行DetachedCriteria时,您必须将其附加到会话,这样您就可以开始了。

这确实不是一个好主意

我不确定您想要完成什么,但我认为您应该看看
DetachedCriteria


这允许您创建未链接/连接到会话的条件查询。当您想要执行DetachedCriteria时,您必须将其附加到会话,这样您就可以开始了。

如果没有活动的
会话可使用,请使用。稍后(例如,在一个DAO中,您有一个活动会话来执行查询),如果没有活动的
会话
,您可以使用它来获取一个可执行的
条件。稍后(例如,在一个DAO中,您有一个活动会话来执行查询),您可以使用来获取一个可执行的
条件

如果您试图在创建查询/Critera的会话关闭后操作查询/Critera,您将得到一个HibernateException抛出。例外情况将显示:“会话已关闭”

因此,如果分离技术不适用,我建议(我自己)总是返回结果,例如

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

如果在创建查询/Critera的会话关闭后尝试操作查询/Critera,您将得到一个HibernateException抛出,而不是返回Critera/Query实例。例外情况将显示:“会话已关闭”

因此,如果分离技术不适用,我建议(我自己)总是返回结果,例如

crit.list();
query.list();
而不是返回Critera/Query实例