从数据库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" 传递它。