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;