java - 从数据库 hibernate hql 检索记录时出现空指针异常

标签 java spring hibernate hql

我的数据库中存在一条记录,我多次交叉该记录,并且该记录是正确的。我还确保在我的类中重写 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/

相关文章:

java - 数据输出流到数组

java - 通过蓝牙在android 2.3中共享文件

java - 服务器上建议的初始堆大小和最大堆大小

java - Spring在多个@Configuration文件中配置同一个bean

spring - 混合Spring AOP和aspectj编译器?

java - 将来自 Primefaces 的 UploadedFile 的输入流转换为字符串

java - DocuSignAPI:无法找到请求目标的有效证书路径

java - Gradle Spring Boot 自定义配置

java - Spring data jpa 在非常具体的场景中抛出 TransientObjectException

hibernate - 无法反序列化 org.hibernate.type.SerializationException