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

java.lang.ClassCastException: java.util.Vector cannot be cast to java.util.ArrayList

我正在学习 JavaEE,正在寻求帮助。我正在尝试从 Derby DB table 获取所有记录以显示在 xhtml 页面(数据表)上。我收到此错误 "java.lang.ClassCastException: java.util.Vector cannot be cast to java.util.ArrayList"。

  1. 谁能解释错误以及我需要如何修复它?
  2. 如何触发数据 table 仅在单击 "Print" 按钮时显示? 提前致谢

我的命名查询:

NamedQueries({ @NamedQuery(name="getAllItemActivities", query="select c from LibraryItemActivity c") })

我的 bean 管理器:

private ArrayList activities;

public ArrayList getActivities() {

  return control.getActivites();

}

我的控制bean:

public ArrayList getActivites() {

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

  return temp;

}

我的html数据table:

<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>

javax.persistence.Query.getResultList() returns a java.util.List,不是 ArrayList。

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