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

  • 相关阅读:
    慎用静态类static class
    20170617
    学习笔记之工厂模式-2017年1月11日23:00:53
    链表翻转
    面试被虐
    tips
    依赖注入那些事儿
    浅谈算法和数据结构(1):栈和队列
    猫都能学会的Unity3D Shader入门指南(一)
    SerializeField等Unity内的小用法
  • 原文地址:https://www.cnblogs.com/goloving/p/7716359.html
Copyright © 2011-2022 走看看