2 tybaoerge tyBaoErGe 于 2014.01.16 22:14 提问

S2SH框架中用session.createQuery(hql)查询出异常.

本人搭了个s2sh的框架,在用session.createQuery(hql)查询的时候出现异常,起先我以为是session未获取到,后来验证session是获取到了的,传入的参数也是获取到了的,但是还是有异常.代码如下,里面做了大量的打印语句来验证对象是否为空.public User findUser(User user) {
if(user!=null){
Session session=this.getSession();
if(session!=null){
System.out.println("Good!获取到了session"+
"打开的吗?"+session.isOpen()+" 连接的吗?"+
session.isConnected()
);
String hql="from User user where id=?";
System.out.println("传入dao层的用户名是:"+user.getId());
Query query=session.createQuery(hql).setInteger(0, user.getId());
System.out.println("##########查询结束!#################");
List list=query.list();
if(list!=null&&list.size()==1){
user=(User) list.get(0);
System.out.println(user.getEmail());
}else{
System.out.println("user没查到");
user=null;
}
}else{
System.out.println("FUCK!session没获取到!");
}
}else{
System.out.println("dao层获得的user是空的.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
}
return user;
}

这是浏览器请求后控制台的打印:
Good!获取到了session打开的吗?true 连接的吗?true
传入dao层的用户名是:100000
这说明session是获取到了的,hql中的id也是获取到了的,但是再查询的时候就异常了,导致后面的System.out.println("##########查询结束!#################");语句没有执行,但是我在Test类中用这个方法却能查询到数据.
请问大家我该怎么继续调试.?

2个回答

u013208438
u013208438   2014.01.16 23:12

可能是 第一次查询完成后session已经自动关闭了,后面的查询要手动打开session

tyBaoErGe
tyBaoErGe   2014.01.17 09:15

已经查到原因了,是因为我用myeclipse自动添加的一些jar里面有个antlr有两个版本的,我删除低版本的就正常了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Hibernate 问题,在执行Query session.createQuery(hql) 报错误直接跳到finally
近日老领导让我看看之前的系统不能登陆了,我查了查卡在了hibernate查询Session.CreateQuery(hql)那里,直接跳到finally内,连catch都没进去,感觉很奇怪,于是问了问度娘,发现一则是在配置文件内添加一个属性节点。 我这项目是SSH搭建的,spring和hibernate配合着。经断点测试当走到 Begin后面的那句createQuery时直接跳入finally,
【面试那些事】-S2SH三大框架的一些面试题收集
Struts2面试题 struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。   核心控制器FilterDispatcher是Struts 2框架的基础, 包含了框架内部的控制流程和处理机制。 业务控制器Action和业务逻辑组件是需要用户来自己实现的。 用户在开发Ac
关于hibernate中createQuery执行hql报错的小结
1。实体类和数据库的表 org.hibernate.hql.ast.QuerySyntaxException: news is not mapped [select id, type,title ,author,message,date from news where type = 1 order by date desc] org.hibernate.hql.ast.util.Session
(详细)Hibernate查询技术(Query、Session、Criteria),Hibernate的三种状态,Hibernate集合struts2实现登录功能(二)
本博客的重点:1)Hibernate的Query,
Hibernate的session.createSQLQuery的几种查询方式
Hibernate的session.createSQLQuery的几种查询方式 当我们用HQL进行子查询的时候,如select * from Tree where pid in (select id from Tree,此时HIBERANTE就会报错,说什么*号错误之类的。但如果将*改为Tree类里的所有子段时就不会有问题了。就会像平时一样第一行数据返 回一个Object[],然后你再根
Hibernate中session.createQuery()与session.createSQLQuery()的区别与使用
两者的区别: Query createQuery ( String queryString) 创建一个查询字符串中给定的HQL 查询新的实例。 参数:HQL查询 返回值:Query查询 抛出异常:HibernateException SQLQuery createSQLQuery ( String queryString) 创建一个新的查询字符串给定的SQL实例SQLQuery的
Hibernate中使用Session操作数据以及部分简单HQL(hibernate query language)
1.Session中的方法: save:新增数据 get:获取一条数据 load:获取一条数据 update:更新数据 delete:删除数据 注:get方法和load方法区别:get是先从一级缓存中获取数据,再从耳机缓冲中获取数据,而load
Hibernate数据更新的第四种方法createQuery()直接执行hql(十)
1 @Test public void testUpdate7() { Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); // Query q = session.createQuery("update Student s set s.name='z5' w
解析 hibernate 的 session.createSQLQuery(sql) & createQuery(hql) ---工作笔记
之前一直都是用hibernate的 hql 面向对象的查询思路 查询出来的都是具体的实体类的集合,这几日查询了一下相关资料,手动解析 createSQLQuery 和 createQuery 返回值。 原来  createSQLQuery 和 createQuery 返回都市 Object[] 型的 List ,这样一来就知道如何解析了。 举一个简单的例子: 有3张表 2个主表 1个
【Hibernate】getHibernateTemplate.find()和session.createQuery()方法总结
Spring中常用的hql查询方法(getHibernateTemplate().find()) 一、find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有User对象 二、find(String queryString , Object value); 示...