我的数据库中存在一条记录,我多次交叉该记录,并且该记录是正确的。我还确保在我的类中重写 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();
}
在我的 Controller 类中,我以这种方式调用 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);
经过研究解决空指针异常,我确保在我的模型类 Admin.java 中重写 toString
@Override
public String toString(){
return this.id + this.name + this.getEmail() + this.getPassword() + this.role;
}
请问我的代码有什么问题吗?
最佳答案
改变
query.setParameter("role", id);
至
query.setParameter("id", id);
如果要返回List<Admin>
也修改一下,
.createQuery("select a.id from Admin a WHERE a.id = :id");
至
.createQuery("from Admin a WHERE a.id = :id");
如果存在单个 ID,它将返回只有一名管理员的管理员列表
如果您想要单个管理员,那么
return query.uniqueResult();
并根据要求更改返回类型
关于java - 从数据库 hibernate hql 检索记录时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39917185/