2013-04-09 105 views
-2

我試圖處理我的A級名單名單從另一個列表中

方法分配後是空的列表值。問題是list2是空的。這是爲什麼發生?

+2

請包括*完整* * *可運行的例子,說明這個問題。現在這個問題是無法回答的。 – NPE 2013-04-09 18:00:37

+1

你已經跳過了你問題中最重要的部分。請向我們展示您用於在get方法中填充列表的邏輯。另外,你是否確保'list'在被'get'返回時被填充? – Gamb 2013-04-09 18:01:17

+0

您是否調試/確保返回的列表不爲空/空? – David 2013-04-09 18:01:21

回答

0

列表2是空的,因爲

public List<A> get(String var) 

返回空列表。

第一行

List <A> list2= new ArrayList <A>(); 
    list2 = get (var); 

被覆蓋與來自的get()的結果。

UPD

你叫criteria.list()的兩倍!

刪除此:

Iterator<A> it = (Iterator<A>) criteria.list().iterator(); 
while(it.hasNext()) 
{ 
obj = it.next(); 
list.add(obj); 
} 

你應該得到ConcurrentModificationException的實際,但無論如何,這是錯誤的。

UPD2

試試這個:

public List<A> get(String var) { 
    Session session = this.getHibernateTemplate().getSessionFactory() 
      .openSession(); 
    Criteria criteria = session.createCriteria(A.class); 
    criteria.add(Restrictions.eq("name", var)); 
    return criteria.list(); 
} 


List<A> list2 = get (var); 
+0

我可以看到帶有調試數據的返回列表 – adbrpc 2013-04-09 18:15:57

+0

您仍然需要刪除該迭代部分。 list = criteria.list()就足夠了。並且不要在兩個地方初始化列表。 – Vitaly 2013-04-09 18:22:37

+0

請參閱upd2中的代碼 – Vitaly 2013-04-09 18:25:49