【问题标题】:How to iterate over Criteria generated List?如何迭代 Criteria 生成的列表?
【发布时间】:2014-01-16 11:27:21
【问题描述】:

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

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

【问题讨论】:

    标签: java hibernate hibernate-criteria


    【解决方案1】:

    您可以使用泛型来简化此操作。您的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()){
              //      
       }
    

    【讨论】:

    • 应该是公认的答案,因为它避免了不必要的强制转换。
    • 抱歉,只是想知道 - List&lt;Article&gt; li= (List&lt;Article&gt;)(se.createCriteria(Article.class).list()); 这不也是一个演员表吗?
    • 是的,您需要转换为 list() 方法返回一个非参数化的 List 对象。对于它的价值,我认为你的回答也很好!
    • 我没有注意到答案也有演员表,实际上这两个答案是相同的,根据回答的时间,我最终选择了这个答案,因为它的提交时间。我也投票了任何正确的答案!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如下进行更改 -

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

      或遍历对象,简单。

      【讨论】:

      • 为什么要转换,什么时候可以使用泛型?
      • 同意@kostja,但正在考虑快速简便的解决方案,考虑 O.P.
      【解决方案4】:

      也尝试使用它来解决问题。

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-20
        • 2017-12-09
        • 2018-02-19
        相关资源
        最近更新 更多