2010-06-12 72 views
0

我试图做到以下几点:可以一个List <>被转换为DataModel的

public String createByMarcas() { 
    items = (DataModel) ejbFacade.findByMarcas(current.getIdMarca().getId()); 
    updateCurrentItem(); 
    return "List"; 
} 

public List<Modelos> findByMarcas(int idMarca){ 
    return em.createQuery("SELECT id, descripcion FROM Modelos WHERE id_marca ="+idMarca+"").getResultList(); 
} 

不过我老觉得厚望:

Caused by: javax.ejb.EJBException 
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5070) 
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:4968) 
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4756) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1906) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84) 
at $Proxy347.findByMarcas(Unknown Source) 
at controladores.__EJB31_Generated__ModelosFacade__Intf____Bean__.findByMarcas(Unknown Source) 

谁能举个手吗? 非常感谢你

回答

2

您在寻找JSF DataModel的功能setWrapperData()

例子:

DataModel dataModel; 
List list; 

list = em.createQuery("Select b from Book b").getResultList(); 
dataModel.setWrapperData(list); 
+0

对于我来说,这段代码对于将'List <>'转换为'DataModel'工作正常。 – John 2016-04-19 11:14:08

1

我想你的问题最明显的答案是不。您查询的内容会回退一个java.util.List,这与JSF DataModel无关,假设这就是您要投射的内容。我对JSF一无所知,但似乎有一个ListDataModel可用于包装列表,所以这可能有助于你的情况。

+0

是的,我强制转换为JSF DataModel的,我会努力的ListDataModel业务,但你知道有关此异常的东西吗? em是EntityManager,如果它有帮助,它不应该工作? – 2010-06-12 05:36:48

+0

我不知道你的设置,但是从我所了解的JPA来看,当一个方法由于异常而无法正常完成时抛出EJBException。在你的情况下,它应该包装一个ClassCastException,我期望。您提供的堆栈跟踪是否完整? – 2010-06-12 05:58:41

+0

不是不完整它实际上相当大,我应该粘贴在这里吗? – 2010-06-12 12:02:25

相关问题