//hibernate中根据用户名查找用户 query.setString("n", name);这方法啥意思
static User findUserByName(String name){
Session s = null;
try{
s=HibernateUtil.getSession();
String hql = "from User as user where user.name=:n";
Query query = s.createQuery(hql);
query.setString("n", name);
List<User> list = query.list();
//返回User 对象
User user=null; //(User)list;
for(User user2:list)
{
user=user2;
}
return user;

}catch(HibernateException e){
throw e;

}finally{
if(s!=null)
s.close();

}
}

解决方案 »

  1.   

    这个看的比较多的是
    String hql = "from User as user where user.name=?";
    之后query.setString(1,"张山")
      

  2.   

    hibernate的命名参数,就是把name赋值给参数n,这种方式维护性很好。
      

  3.   

    设置  hql语句里面的“?”  的值
    set.setString(a,"b")  n 代表的是下标   第二个参数是值咯
      

  4.   


    要是那样的话query.setString("n", name)应该在Query query = s.createQuery(hql)之前,
      

  5.   


    扯淡,不懂就虚心点,别装,只要在query.list之前传进去就行。?叫做positional parameter,用序号定位。query.setString(1, name)
    :叫做named parameter,用名字定位。query.setString("n", name)
      

  6.   

    没有创建Query,怎么设置呢?
      

  7.   

    在hql查询数据库是。n代表你where 后去的名字。。
    而“name” 就是你设置要查询的条件值的名字
      

  8.   

    先了解一下JDBC规范吧,一上来就Hibernate容易犯晕。不知道LZ对prepareStatement有没有映像。
      

  9.   

    原来这些在jdbc中都有,在学校jdbc还没咋学,就开始hibernate
      

  10.   

    原来这些在jdbc中都有,在学校jdbc还没咋学,就开始hibernate