如何使用外观方法将实体强制转换为列表

时间:2019-03-28 04:41:54

标签: java persistence

我正在尝试使用“ listarEntregaKitRegistro”方法从该列表中添加和删除对象,但是假定显示该列表的.xhtml不会在屏幕上显示任何内容。

Kit是我数据库中的一个实体类,kitFacade是一种允许您在此案例中获取有关某个实体的列表的方法,kitFacade也由netbeans作为实体类中的会话bean生成,实际上是kitFacade.findAll()工作正常,并从该列表中检索所有元素,但我需要获得一些例外。

public List<Kit> listarEntregaKitRegistro(){
 for (int i=0; i<=kitFacade.findAll().size(); i=i+1){    
    if (kit.getEstadoKit()=="Activo"){
        kitFacade.findAll().add(i, kit);
        }
    else {
          kitFacade.findAll().remove(i);
          }
    }
    return kitFacade.findAll();
}

glassfish服务器4.1.1引发的异常:

Caused by: java.lang.ClassCastException: com.entity.Kit cannot be cast to 
java.util.List
at com.controller.KitController.paraEntregar(KitController.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:332)

1 个答案:

答案 0 :(得分:1)

我不知道您要将Kit投射到List。但是您做错了字符串比较。可能在其他功能中,您正在将对象投射到列表中。这是经过一些修改的代码。

public List<Kit> listarEntregaKitRegistro(){
 List<Kit> list = kitFacade.findAll();
 for (int i=0; i<=list.size(); i++){    
    if (kit.getEstadoKit().equals("Activo")){ // compare String by Equals method
       list.add(i, kit);
     }else{
      list.remove(i);
       }
    }
    return list;
}