java.lang.ClassCastException:java.util.Vector无法强制转换为java.util.ArrayList

时间:2016-07-28 20:11:57

标签: html java-ee arraylist datatable javabeans

我正在学习JavaEE,并寻求一些帮助。我试图从Derby DB表中获取所有记录以显示在xhtml页面上(dataTable)。我收到此错误" java.lang.ClassCastException:java.util.Vector无法强制转换为java.util.ArrayList"。

  1. 有人可以解释错误以及我需要如何修复错误吗?
  2. 如何触发数据表仅在"打印"单击按钮? 提前致谢
  3. 我的命名查询:

      

    NamedQueries({       @NamedQuery(name =" getAllItemActivities",query ="从LibraryItemActivity c&#34中选择c;)   })

    我的bean经理:

      

    私人ArrayList活动;

         

    public ArrayList getActivities(){

      return control.getActivites();
    
         

    }

    我的控制bean:

      

    public ArrayList getActivites(){

      ArrayList<LibraryItemActivity> temp = (ArrayList<LibraryItemActivity>) em.createNamedQuery("getAllItemActivities").getResultList();
    
      return temp;
    
         

    }

    我的html数据表:

    <h:form>
        <h:commandButton value = "Print"></h:commandButton>
        <h:dataTable value = "#{libraryBeanManager.activities}" var = "a">
            <h:column>
                <f:facet name="header">Book Title:</f:facet>
                #{a.libraryitemtitle}
            </h:column>
            <h:column>
                <f:facet name="header">Author:</f:facet>
                #{a.patron}
            </h:column>
            <h:column>
                <f:facet name="header">Publisher:</f:facet>
                #{a.activitytype}
            </h:column>
        </h:dataTable>  
    </h:form>
    

1 个答案:

答案 0 :(得分:0)

javax.persistence.Query.getResultList()返回java.util.List,而不是ArrayList。

将ArrayList声明更改为java.util.List。