public class MySqlDaoImpl extends HibernateDaoSupport implements MySqlDao{
//检查有没有这个用户
public AdminUser loginName(String name){
System.out.println("dao==== "+name);
AdminUser admin = null;
Query query = (Query)this.getSession().createQuery("from model.AdminUser where name=?");
query.setString(0,name);
List list = query.list();
if(list.size()>0){
admin = (AdminUser)list.get(0);
}
return admin;
}
老是提示 这行 报空指针 Query query = (Query)this.getSession().createQuery("from model.AdminUser where name=?");----------------------------------------我控制台 也打印出 System.out.println("dao==== "+name);
======================================真不知道为什么会报空指针 明明输入值了 也报
//检查有没有这个用户
public AdminUser loginName(String name){
System.out.println("dao==== "+name);
AdminUser admin = null;
Query query = (Query)this.getSession().createQuery("from model.AdminUser where name=?");
query.setString(0,name);
List list = query.list();
if(list.size()>0){
admin = (AdminUser)list.get(0);
}
return admin;
}
老是提示 这行 报空指针 Query query = (Query)this.getSession().createQuery("from model.AdminUser where name=?");----------------------------------------我控制台 也打印出 System.out.println("dao==== "+name);
======================================真不知道为什么会报空指针 明明输入值了 也报
把0改成1,oracle是从1开始的..
你写0,在数据库那头就是name=null的查询了
查询实体对象 下标 从 0 开始JDBC 是从 1 开始的
setString(int position, String val),它的位置是从第1个开始
String val)
其次就是你传参的问题,这里的下标确实是从1开始的! 不行的话你试试先不代入参数,指定个名字看看它是否能执行,这些都排查过后,那里出问题应该都一目了然了!
下标 写 1 就出现这个:ava.lang.IllegalArgumentException: Positional parameter does not exist: 1 in query: from model.AdminUser where name=?