从另一个列表分配后,列表为空

时间:2013-04-09 17:58:30

标签: java arraylist

我正在尝试处理我的A类列表。

方法:

public List<A> get(String var) {    
List  <A> list= new ArrayList <A>();
A obj = new A();
Session session = this.getHibernateTemplate().getSessionFactory().openSession();
Criteria criteria = session.createCriteria(A.class);
criteria.add(Restrictions.eq("name", var)); 
Iterator<A> it = (Iterator<A>) criteria.list().iterator();
while(it.hasNext())
{
obj = it.next();
list.add(obj);
}
return list;
}

方法调用:

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

在调试时,我可以看到列表值。问题是list2是空的。为什么会这样?

1 个答案:

答案 0 :(得分:0)

list2为空,因为

   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);