Query 对象执行list方法报Session is closed

来源:百度知道 编辑:UC知道 时间:2024/06/01 10:50:05
public List queryList(String hsql, HashMap<String, Object> params) {
Query q = createQuery(hsql, params);
List list= q.list();//执行到这报错Session is closed
//return getHibernateTemplate().find(hsql);没错
return list;
}
/---------------------------------------------------------------/
private Query createQuery(final String hsql,
final HashMap<String, Object> params) {
return (Query) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Query query = session.createQuery(hsql);
String[] keys = query.getNamedParameters();

if (keys != null && params != null) {
for (String key : keys) {
if (!params.containsKey(key)) {
throw new RuntimeException("没有设置参数" + key + "的值");
}
Object value = params.get(key);

在web.xml配置一个opensessionview 试试看
<!-- 延迟加载配置 -->
<filter>
<filter-name>opensessioninview</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>opensessioninview</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

你的Hibernate将session关了。