Java 多次SQL查询后出现NullPointerException

Java 多次SQL查询后出现NullPointerException,java,sql,hibernate,Java,Sql,Hibernate,我有一种奇怪的行为: 我有一个从数据库中获取数据的方法 public void calculate(Run run, Map<String, Curve> epe) { for (Entry<String, Curve> entry : epe.entrySet()) { Entity ntt = leDAO.getById(entry.getKey(), run); double lgd = leDAO.getLgd(ntt,

我有一种奇怪的行为:

我有一个从数据库中获取数据的方法

public void calculate(Run run, Map<String, Curve> epe) {
    for (Entry<String, Curve> entry : epe.entrySet()) {
        Entity ntt = leDAO.getById(entry.getKey(), run);

        double lgd = leDAO.getLgd(ntt, run);
        Curve dp = curveDAO.getDp(entry.getKey(), run);
        String currency = leDAO.getCurrency(ntt, run);
        Curve df = curveDAO.getDf(currency, run);

        double val = 0.0;
        for (int i = 0; i < pd.size(); i++) {
            cva += entry.getValue().get(i) * df.get(i) * dp.get(i);
        }
        val *= lgd;
    }
}
然后,它抛出一个NullPointerException,除了我找不到空值之外(leDAO、ntt和run都设置为非空值)。 我无法单步进入getLgd()方法(如果我这样做,我将从Thread.class中获取dispatchUncaughtException()。 这张地图大约有150把钥匙

编辑 getLgd()方法:


以下是导致空指针异常的潜在原因:

public Double getLgd(... stuff)
{
    Double lgd = null;
    if (result != null)
    {
        ... blah
    }

    return lgd;
}


double ILikeNullPointerExceptionsWhenResultIsNull = getLgd();
解释 从
Double
值到
Double
值的Autobox转换包括对
Double
值的隐式解引用。例如:

Double blam = null;
double hoot;

hoot = blam;

语句
hoot=blam
hoot=blam.doubleValue()
没有区别。上述
blam
变量的解引用将导致NullPointerException。

leDAO.getLgd(ntt,run)到底做什么?您能提供这种方法吗?您的代码似乎受到了影响。在您的情况下,这实际上是一个5n+1问题;)谢谢,这就是问题所在。我仍然不明白为什么调试时我不能介入
public Double getLgd(... stuff)
{
    Double lgd = null;
    if (result != null)
    {
        ... blah
    }

    return lgd;
}


double ILikeNullPointerExceptionsWhenResultIsNull = getLgd();
Double blam = null;
double hoot;

hoot = blam;