2013-04-09 64 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