2011-05-16 109 views
0

我知道这段代码相当混乱。将一个列表的提取复制到另一个列表我很确定不是最优雅的解决方案。不过,我只想弄清楚为什么这不起作用。休眠列表映射问题

这是一个查询数据库的hibernate方法,在列表中返回一个输入。即修复列表。从这我只想要我想用来填充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; 
    } 

回答

3

赶紧看你的代码,看来你是不初始化

List <String> fixString 

正常。当你调用一个方法时它将是空的。因此,而不是

List <String> fixString = null; 

通过初始化列表,例如,

List <String> fixString = new ArrayList<String>();