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

这两天在研究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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值