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