我知道这段代码比较混乱。将一个列表的提取复制到另一个列表我非常肯定不是最优雅的解决方案。但是我只是想弄清楚为什么这不起作用。
这是一个查询db的hibernate方法,返回列表中的enteries。即修复清单。从这里我只想要我想用来填充fixString列表的FixString。
然而,由于我不知道的原因。每当我打电话
try {
//Get all the Fix Strings stored in db
fixStrings = HibFunction.listFix();
} catch (Exception e) {
System.out.printf("Cannot get Fix strings",e);
}
我的junit没有给我一个控制台打印输出
1个字符串
无法获取修复字符串
NullPointer的失败追踪......
为什么这个等于null,尽管能够打印出结果?
public static List<String> listFix()
{
List <String> fixString = null;
List fix = null;
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
fix = session.createQuery("from metadataPoC.hib.TestHib").list();
for (Iterator iterator = fix.iterator(); iterator.hasNext();)
{
TestHib fixtable = (TestHib) iterator.next();
System.out.println("****************************************************");
System.out.println("****************************************************");
System.out.println(fixtable.getFixString());
System.out.println("****************************************************");
System.out.println("****************************************************");
fixString.add(fixtable.getFixString());
}
transaction.commit();
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
return fixString;
}
答案 0 :(得分:3)
快速查看代码,似乎您没有初始化
List <String> fixString
正确。当您在其上调用方法时,它将为null。而不是
List <String> fixString = null;
通过例如
初始化列表List <String> fixString = new ArrayList<String>();