2011-05-16 175 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>();