-2

我正在尝试处理我的 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 是空的。为什么会这样?

4

1 回答 1

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);
于 2013-04-09T18:02:55.957 回答