Hibernate的查询

    最近刚进公司,改一个页面,设计到hibernate的查询,但是在查询的过程中,发现自己对查询除了一个很大的错误认识;分享各位网友;

不多说了,直接上代码:

如下代码,我的dao原本意图是想通过用户登录名查询出user的所有信息;但是如果使用createquery这样的话,在查询的过程中,只能针对数字查询.非数字就会报错.

@Override
    public com.donen.pojo.User getUserByloginUserName(String loginUserName) {
        Session session = HibernateUtil.getSession();
        HibernateUtil.beginTransaction();


        Query query = session.createQuery("from User  where  Login_User_Name="+loginUserName);//只能针对数字查询


        List<com.donen.pojo.User> list = query.list();
        //如果获取的值为空就返回空
        if (list.size()==0) {
            return null;
        }else {
            return (com.donen.pojo.User) list.get(0);
        }
    }


经过改进后代码如下:

@Override
    public com.donen.pojo.User getUserByloginUserName(String loginUserName) {
        Session session = HibernateUtil.getSession();
        HibernateUtil.beginTransaction();

        SQLQuery query = session.createSQLQuery("select * from User  where  Login_User_Name=?");
        query.addEntity(com.donen.pojo.User.class);
        query.setParameter(0, loginUserName);


        List<com.donen.pojo.User> list = query.list();
        //如果获取的值为空就返回空
        if (list.size()==0) {
            return null;
        }else {
            return (com.donen.pojo.User) list.get(0);
        }
    }


这样写sql后就解决问题,至于原因我自己好像也说的不太清楚.也希望有大神能给个解释.如果,能解决部分人的困扰,深感荣欣.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值