关于Hibernate 在Junit测试中可以成功但是在Web下却无法运行的处理方法

来源:互联网 发布:酷比魔方windows系统 编辑:程序博客网 时间:2024/06/05 02:24

这两天在研究JAVA的框架Hibernate。在看着教程写完代码以后,在Junit中测试可以正常操控数据库,但是将项目布置到tomcat中以后就无法正常运行了。
MyEclipse控制台反馈的信息:
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.重启服务器。

阅读全文
0 0
原创粉丝点击