这两天在研究JAVA的框架Hibernate。在看着教程写完代码以后,在Junit中测试可以正常操控数据库,但是将项目布置到tomcat中以后就无法正常运行了。
MyEclipse控制台反馈的信息:
网页页面报的错误:
//程序中关于这一段的代码
public boolean usersLogin(Users u) {
// TODO Auto-generated method stub
// 事务对象
Transaction tx = null;
String hql = "";
try {
Session session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
hql = "from Users where username = ? and password = ?";
Query query = session.createQuery(hql);
query.setParameter(0, u.getUsername());
query.setParameter(1, u.getPassword());
List list = query.list();
tx.commit(); // 提交事务
if (list.size() > 0) {
return true;
} else {
return false;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
} finally {
if (tx != null) {
tx = null;
}
}
}
经测试查找,是在执行到这句代码的时候停止了。
Query query = session.createQuery(hql);
网上查了 说是 到了程序到了这个位置就阻塞了。无法继续向下执行。可能是hql语句有问题。
解决方法:
方法一:
1.将hql语句改成sql语句,例如:hql = “from Users where username = ? and password = ?” 修改为 hql = “select * from Users where username = ? and password = ?” 。
2.将 session.createQuery() 换成 session.createSQLQuery().
方法二:
1.查看你的Tomcat 下该项目的lib目录下是否有多个版本的antlr.jar。如果有将低版本的antlr.jar删除。
2.重启服务器。