如何迭代Criteria生成的List?

时间:2014-01-16 11:27:22

标签: java hibernate hibernate-criteria

我有一个方法,可以使用以下代码从数据库返回所有Article

public static List getAllArticles(){
    Session se=openSession();
    List li=se.createCriteria(Article.class).list();
    se.close();
    return li;
}

但是当我想在结果上使用for-each时:

for(Article a :Boss.getAllArticles()){
          //      
   }

显示此错误:

  

不兼容的类型:对象无法转换为Article

4 个答案:

答案 0 :(得分:3)

您可以使用泛型来简化此操作。您的getAllArticles可以返回Article个对象的列表。它看起来像这样:

public static List<Article> getAllArticles(){
    Session se=openSession();
    List<Article> li= (List<Article>)(se.createCriteria(Article.class).list());
    se.close();
    return li;
}

然后你应该能够使用你展示的循环迭代它:

   for(Article a : Boss.getAllArticles()){
          //      
   }

答案 1 :(得分:1)

List用作通用类型。然后迭代你的列表,它不需要转换你的对象。

List<Article> li=(List<Article>)se.createCriteria(Article.class).list();

答案 2 :(得分:1)

进行更改 -

return (List<Article>)li; 
and public static List<Article> getAllArticles(){}

或者通过Object迭代,简单。

答案 3 :(得分:0)

尝试使用它。

List<Article > articleValueList = new ArrayList<Article >();
Criteria criteria = session.createCriteria(Article.class);
articleValueList = (List<Article>) criteria.list();

您可以迭代此articleValueList以从数据库中获取值。