从数据库hibernate hql中检索记录时出现空指针异常
null pointer exception on retrieving records from the database hibernate hql
我的数据库中有一条记录,我跨越了几次并且记录是正确的。我还确保在我的 class 中覆盖了 toString 以获得我正在检索的数据的有意义的表示。
这是我用来从数据库中获取记录的 hql
public List <Admin> getByAdminRole(int id) {
Query query = _sessionFactory.getCurrentSession()
.createQuery("select a.id from Admin a WHERE a.id = :id");
query.setParameter("role", id);
return query.list();
}
在我的控制器中class我是这样调用hql方法的
SupportDao _supportDao = new SupportDao();
List <Admin> add = _supportDao.getByAdminRole(1); //this line of code throws null pointer exception
System.out.println(">>>>>>>>>>> the value of add>>>>>>> " + add);
在研究解决空指针异常后,我确保 toString 在我的模型中被覆盖 class Admin.java
@Override
public String toString(){
return this.id + this.name + this.getEmail() + this.getPassword() + this.role;
}
请问我的代码有什么问题吗?
改变
query.setParameter("role", id);
至
query.setParameter("id", id);
如果想returnList<Admin>
也修改,
.createQuery("select a.id from Admin a WHERE a.id = :id");
至
.createQuery("from Admin a WHERE a.id = :id");
它将 return 如果存在单个 ID,则只有一个管理员的管理员列表
如果你想要单管理员,那么
return query.uniqueResult();
并根据要求更改 return 类型
既然你正在实例化 SupportDAO
你自己 绝对是,101% 肯定 SupportDAO
中的 _sessionFactory
也被实例化了吗?
查看上面的代码,您将 "id" 作为参数传递,但在 setParameter 方法中,您传递的是 "role".
我猜你只需要用 "id" 传递它。
我的数据库中有一条记录,我跨越了几次并且记录是正确的。我还确保在我的 class 中覆盖了 toString 以获得我正在检索的数据的有意义的表示。
这是我用来从数据库中获取记录的 hql
public List <Admin> getByAdminRole(int id) {
Query query = _sessionFactory.getCurrentSession()
.createQuery("select a.id from Admin a WHERE a.id = :id");
query.setParameter("role", id);
return query.list();
}
在我的控制器中class我是这样调用hql方法的
SupportDao _supportDao = new SupportDao();
List <Admin> add = _supportDao.getByAdminRole(1); //this line of code throws null pointer exception
System.out.println(">>>>>>>>>>> the value of add>>>>>>> " + add);
在研究解决空指针异常后,我确保 toString 在我的模型中被覆盖 class Admin.java
@Override
public String toString(){
return this.id + this.name + this.getEmail() + this.getPassword() + this.role;
}
请问我的代码有什么问题吗?
改变
query.setParameter("role", id);
至
query.setParameter("id", id);
如果想returnList<Admin>
也修改,
.createQuery("select a.id from Admin a WHERE a.id = :id");
至
.createQuery("from Admin a WHERE a.id = :id");
它将 return 如果存在单个 ID,则只有一个管理员的管理员列表
如果你想要单管理员,那么
return query.uniqueResult();
并根据要求更改 return 类型
既然你正在实例化 SupportDAO
你自己 绝对是,101% 肯定 SupportDAO
中的 _sessionFactory
也被实例化了吗?
查看上面的代码,您将 "id" 作为参数传递,但在 setParameter 方法中,您传递的是 "role".
我猜你只需要用 "id" 传递它。