javaweb-麻烦大家帮我看看这个空指针异常应该怎么改?

问题描述

麻烦大家帮我看看这个空指针异常应该怎么改?

BaseServiceImpl:

/**
* @param hql:传入的hql,可以带?
* @param parameters:问号对应的参数数组
*/
public List getResult(String hql, Object[] parameters) {
// TODO Auto-generated method stub

    Query query = sessionFactory.getCurrentSession().createQuery(hql);
    //注入?
    if(parameters != null && parameters.length > 0){
        for(int i = 0;i < parameters.length;i ++){
            query.setParameter(i, parameters[i]);
        }
    }
    return query.list();
}

ArticleServiceImpl:
public PageBean queryForPage(int userId,int pageSize,int page){

    final String hql = "from Article where users.id=" + userId;
    int allRow = getResult(hql,null).size(); //总记录数
    int totalPage = PageBean.countTatalPage(pageSize,allRow); //总页数
    final int offset = PageBean.countOffset(pageSize, page); //当前页开始记录
    final int length = pageSize;  //每页记录数
    final int currentPage = PageBean.countCurrentPage(page); //当前页
    List<Article> list = queryForPage(hql,offset,length);

    //把分页信息保存到bean当中
    PageBean pageBean = new PageBean();
    pageBean.setPageSize(pageSize);
    pageBean.setCurrentPage(currentPage);
    pageBean.setAllRow(allRow);
    pageBean.setTotalPage(totalPage);
    pageBean.setList(list);
    pageBean.init();

    return pageBean;
}

异常信息指示:getResult方法中Query query = sessionFactory.getCurrentSession().createQuery(hql);这句话有问题和ArticleServiceImpl中的int allRow = getResult(hql,null).size(); //总记录数这句话有问题。
请大家帮我看看这个空指针异常怎么改?

解决方案

如果你不太会打断点,这样:
这下面的代码中,做类似这种事情,类型你自己根据你的情况来定:

T factory = sessionFactory;

//对factory判空...

T session = factory.getCurrentSession();

//对session判空...

T query = session.creatQuery(hql);

//对query判空...
    Query query = sessionFactory.getCurrentSession().createQuery(hql);
    //注入?
    if(parameters != null && parameters.length > 0){
        for(int i = 0;i < parameters.length;i ++){
            query.setParameter(i, parameters[i]);
        }
    }
    return query.list();
}

解决方案二:

请贴出调用栈和关键变量的值.

解决方案三:

userId是在action中传值进去。我试了一下,
@SuppressWarnings("unchecked")
public int getAllRowCount(String hql){
List list = getResult(hql,null);
if(list != null){
return list.size();
}else{
return 0;
}
}
然后int allRow = getAllRowCount(hql); 也是报出空指针异常。

解决方案四:

请采纳~~~

在这句代码上打断点breakpoint;
然后跟getResult;

建议你分开写:

List<T> result = getResult(hql,null);
//result有可能返回空,你判断了吗?
int allRow = resultOrNull == null?0:result.size();

解决方案五:

时间: 2024-09-17 03:32:19

javaweb-麻烦大家帮我看看这个空指针异常应该怎么改?的相关文章

麻烦大家帮我看看下面的sql问题?

问题描述 麻烦大家帮我看看下面的sql问题? select distinct a.* from a,b where to_char(a.reg_date,'yyyy-mm-dd') >= '2015-08-10' and to_char(a.reg_date,'yyyy-mm-dd') < '2015-08-11' and a.card_no = b.card_no and a.dept_name is not null and a.dept_name <> '.' and a.v

c语言-麻烦大家帮我看一下这段代码有啥错误?

问题描述 麻烦大家帮我看一下这段代码有啥错误? #include<stdio.h> int b[100],c[100],x; void input(int a[],int n) {printf("输入数组a<10个元素>:"); for(int i=0;i<n;i++) scanf("%c",&a[i]);} void insert(int a[],int n,int x) {for(int i=0;i<n;i++) if

MySQL 麻烦大家帮我看看下面的两张表如何创建?

问题描述 MySQL 麻烦大家帮我看看下面的两张表如何创建? CREATE TABLE store ( store_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, manager_staff_id TINYINT UNSIGNED NOT NULL, address_id SMALLINT UNSIGNED NOT NULL, last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDA

ajax-extjs 麻烦大家帮我看看下面的问题

问题描述 extjs 麻烦大家帮我看看下面的问题 在js文件中定义一个全局变量var orderLen;在ajax中,Ext.Ajax.request({ url : appBaseUri , timeout : 20000 method : ""GET"" success : function(response) { var result = eval(""("" + response.responseText + &quo

变换-麻烦各位帮我改下程序吧,输入#include &amp;amp;quot;stdafx.h&amp;amp;quot;在VC++上面不能运行呀~~

问题描述 麻烦各位帮我改下程序吧,输入#include "stdafx.h"在VC++上面不能运行呀~~ #include ""stdafx.h""#include #include #include #include #include #define N 1000 /*定义复数类型*/ typedef struct { double real; double img; }complex; void fft(); /*快速傅里叶变换*/ void

gzip windows2008-windows 2008 配置gzip却无效,麻烦高手帮我看看

问题描述 windows 2008 配置gzip却无效,麻烦高手帮我看看 1.服务器自动开启了动态压缩和静态压缩 2.js的mime类型是application/x-javascript 3.applicationhost.config 文件已经修改如下: 为什么尼玛就还是不行呢?搞了一天啦

java中需要统计子串在字符串中出现多少次。 麻烦大家帮我详细解释一下那串代码是什么意思。谢谢了!

问题描述 java中需要统计子串在字符串中出现多少次. 麻烦大家帮我详细解释一下那串代码是什么意思.谢谢了! String str="abcjavadefjavadddjava"; String newStr="java"; int count=0; int i=0;//出现的下标 while(str.indexOf(newStr,i)>=0 && i<=str.length()){ count++; i = str.indexOf(ne

关于java问题-麻烦大家帮我看看。急。。。谢谢

问题描述 麻烦大家帮我看看.急...谢谢 间的所有的可逆素数//要求步骤,即一个步骤对于一个方法://1.找到1001~9999之间的所有的素数,保存到数组primes中//2.在primes数组中,找到所有的可逆素数,保存到数组oddprimes中//3.在oddprimes数组中,找到所有不含2和5的可逆素数,保存到primes数组中//4.输出oddprimes数组和primes数组,每行10个素数 解决方案 不知道你说的可逆是什么意思. 找素数可以参考 http://blog.163.c

spring-Java 麻烦大家帮我看看下面的代码

问题描述 Java 麻烦大家帮我看看下面的代码 Map queryDynamicConditions = new HashMap(); queryDynamicConditions.put("$isNull_authNumber", new Boolean(false)); order.setQueryDynamicConditions(queryDynamicConditions); 能帮我具体解释一下这段代码是怎么工作的?另外,我想把条件换成大于等于系统时间,我应该怎么写?请大家指