2012-01-12 78 views
0

IM的数据表,如果这是SRY一种适合你的方便情况下,填充学习JSF环境primefaces从nativeQuery

我试着去填充primefaces从本机查询的数据表,这是我得到的那一刻

 //My native query is defined in my entity 
     @NamedNativeQueries({@NamedNativeQuery(name="Tallt089.bandejaCitas", 
     query ="select bandeja.ep_id_tallt089 idBandeja ...)}) 
     ... 
     ... 

我把这个nativeQuery这样

 public List**<TablaBandejaCitas>** bandejaCitas(String cia, String agencia, String division) { 
     Query query = em.createNamedQuery("Tallt089.bandejaCitas"); 
     query.setParameter(1,cia); 
     query.setParameter(2,agencia); 
     query.setParameter(3,division); 
     return query.getResultList(); 
    //this works fine retrieves correctly my query 
} 

并使用它在我的managedBean

 public List**<TablaBandejaCitas>** bandejaCitas(String compania, 
     String agencia,String division){ 
     return agendamientoSession.bandejaCitas(compania,agencia,division); 
     } 

然后引用这是我的JSF页面上这样

 <p:dataTable id="bandeja_citas" 
    value="#{AgendamientoMBean.bandejaCitas(UsuarioMBean.compania,UsuarioMBean.agencia, 
    UsuarioMBean.divisionPK.diDivision)}" 
          var="bandeja" 
          paginator="true" rows="15" > 
        <f:facet name="header"> 
         Bandeja Citas por confirmar/Llamadas por realizar 
        </f:facet> 
        <p:column headerText="Id Bandeja" > 
         <h:outputText value ="#{bandeja.idBandeja}"/> 
        </p:column> 

        <p:column headerText="Cliente" sortBy="#{bandeja.cliente}" 
         filterBy="#{bandeja.cliente}"> 
         <h:outputText value ="#{bandeja.cliente}"/> 
        </p:column> 
       ... 
       ... 
       ... 
       </p:dataTable> 

我意识到了var属性需要像映射查询的领域,因为JSF页面上的警告告诉我,这是一个unkwon财产

 <h:outputText value ="#{bandeja.**cliente**}"/> 

我不知道如何查询存储在该变量,这样的数据可以显示

现在我有一个为输入字符串例外喜欢它的读取原始数据,而不是用充满查询字段正确的变量formmatted列表中的分量..

希望你能提前understandme

apreciatte您的意见:d

+0

是您的bandejaCitas方法只是返回对象对象的默认列表?您可能需要进行一些投射以确保其已知您拥有Bandeja实体对象。返回(列表)query.getResultList(); – Rich 2012-01-12 21:10:16

+0

嗨@Rich谢谢你的回答。是的,它只是返回一个列表Objects对象,你能告诉我一个关于如何实现这个强制转换的例子吗?所以我可以在jsf页面正确地调用它,我更新了我的代码添加一个演员表,但仍然不工作 – arkantos 2012-01-12 22:38:52

+0

当然,这是我刚刚注意到的相比,我看到使用只返回对象的getResultList()的代码,所以在至少有一个步骤是让Java知道这些对象实际上是一个您拥有属性的类,用于查询的每个投影。如果本机查询未返回映射到Entity/Bandeja类中属性的表列映射,那么我认为这是一个问题。 回过头来看,如果你能解释你为什么使用NativeQuery,并且一般会试图从数据库中抽取数据(一行或一个多元查询?),那么回答你的问题可能会有所帮助 – Rich 2012-01-12 23:09:05

回答

0

好,我解决了这个小问题。我这样做是通过创建一个实体类(即使不是在一个数据库中的表)与我在nativeQuery选择列,然后使用这个类作为本地的resultClass选项:

resultClass=com.talleresZeusWeb.entidades.BandejaCitas.class 

我试着使这个sqlresultsetmapping注释,但不知道在这种情况下使用它。

希望有人发现在某些时候这个有用,谢谢您的答复@Rich