zoukankan      html  css  js  c++  java
  • Hibernate 参数匹配查询

      第一种:

    public User validate(String userName, String password) {  
        String hql = "from User where userName =:userName and password =:password";  
        User user = null;  
        Object[] values = {userName, password};  
        String[] paramNames = {"userName", "password"};  
        List<User> list = ht.findByNamedParam(hql, paramNames, values);  
        if (list.size()!=0){  
            user = list.get(0);  
        }  
        return user;  
    }

      第二种:

    public User validate(String userName, String password) {  
        String hql = "from User u where u.userName = ? and u.password = ?";  
        User user = null;  
        List<User> list = ht.find(hql, new Object[]{userName, password});  
        if (list.size()!=0){  
            user = list.get(0);  
        }  
        return user;  
    }

      两种方法:find() 和 findByNameParam(),from User u ...... u可写可不写

    总结:

      当用"?"的时候,必须 ht.***("", new Object(*));  否则会出现异常:org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1

      当用"=:"的时候,必须定义参数 parameters,values。ht.***("", parameters, values);

     hqlBuilder.addWhereClause(" 1=2 ", new Object[]{});//正常
     
     hqlBuilder.addWhereClause(" 1=2 ", ""});//报错

      主要是知道报这个异常(org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters.)的解决方案。

  • 相关阅读:
    python 返回函数的使用
    你的服务器还在裸奔吗?
    云计算产品vSwitch原理
    网卡创建Bond
    UI自动化框架介绍
    常用底层linux命令
    Linux Bridge基本概念
    磁盘格式化及设置自动挂载
    Linux vi文本编辑器常用命令
    MySQL5.7安装方式
  • 原文地址:https://www.cnblogs.com/goloving/p/7716359.html
Copyright © 2011-2022 走看看