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.)的解决方案。

  • 相关阅读:
    Fractal
    加工生产调度/爬山Mountain Climbing
    魔板 Magic Squares
    USACO Section 1.5
    USACO Section 1.4(有技巧的枚举)
    卷积神经网络 CNN
    优化算法
    评价分类器的好坏
    梯度消失 / 梯度爆炸以及Xavier初始化
    Dropout
  • 原文地址:https://www.cnblogs.com/goloving/p/7716359.html
Copyright © 2011-2022 走看看