Boa noite amigos,
Estou encontrando algumas dificuldades em implementar algo que me parece ser simples. Vejam se podem me ajudar.
Meu Objetivo:
- Criar um dataTable com base em um list que é gerado por uma namedQuery que contem um group by.
Entre as várias tentativas, a que mais se aproximou foi está.
1 - NamedQuery
@NamedQuery(name = "GeEspera.searchByProcesso" ,query = " select a.empresa,a.fgProcessado,count(a) from GeEspera a GROUP BY a.empresa, a.fgProcessado ")
2 - Meu controlador - ManagedBean
public String executaConsulta (){
try{
resultList = dao.findList("GeEspera.searchByProcesso", null);
return "callFormBilhetagemSuccess";
}catch(Exception ex){
ex.printStackTrace();
return "callFormBilhetagemError";
}
}
3 - Meu data Table ( Pagina JSF )
<r:dataTable value="#{GeController.resultList}"
var="grid"
id="grid"
<r:column>
<f:facet name="header">
<h:outputText value="#{bundle.textCompany}"/>
</f:facet>
<h:outputText value="#{grid.fgProcessado}"/>
</r:column>
</r:dataTable>
Quando executo , encontro o seguinte erro:
javax.servlet.ServletException: For input string: “fgProcessado”
No jsf , se ao inves de colocar <h:outputText value="#{grid.fgProcessado}"/> eu colocar <h:outputText value="#{grid}"/> não dá erro. Porém ele retorna um object ( [Ljava.lang.Object;@2c502a ) e eu não sei como converte-lo. Enfim, tô apanhando com isso e gostaria de contar com a ajuda de vocês.
A segunda tentativa foi :
1 - Criei esta classe
public class Temp {
private GeEmpresa empresa;
private String nome;
private long valor;
/**/
public Temp(GeEmpresa empresa, String nome, long valor) {
this.empresa = empresa;
this.nome = nome;
this.valor = valor;
}
Get e Set
2 - NamedQuery ficou assim
@NamedQuery(name = "GeEspera.searchByProcesso" ,query="select new br.com.nuwe.tamandua.model.ge.Temp( a.empresa,a.fgProcessado,count(a)) from GeEspera a GROUP BY a.empresa, a.fgProcessado ")
3 - Meu controlador - ManagedBean ( Ficou Igual ) - Agora temos um retorno do tipo TEMP certo ?
public String executaConsulta (){
try{
resultList = dao.findList("GeEspera.searchByProcesso", null);
return "callFormBilhetagemSuccess";
}catch(Exception ex){
ex.printStackTrace();
return "callFormBilhetagemError";
}
}
4 - Meu data Table ( Pagina JSF ) mudou. Agora ao inves de grid.fgProcessado ficou grid.nome conforme a classe Temp.
<r:dataTable value="#{GeController.resultList}"
var="grid"
id="grid"
<r:column>
<f:facet name="header">
<h:outputText value="#{bundle.textCompany}"/>
</f:facet>
<h:outputText value="#{grid.nome}"/>
</r:column>
</r:dataTable>
Agora o erro é:
Local Exception Stack:
Exception [EclipseLink-6137] (Eclipse Persistence Services - 1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.QueryException
Exception Description: An Exception was thrown while executing a ReportQuery with a constructor expression: java.lang.NoSuchMethodException: br.com.nuwe.model.tamandua.ge.Temp.(br.com.nuwe.model.tamandua.ge.GeEmpresa, java.lang.String, java.lang.Long)
Query: ReportQuery(br.com.nuwe.model.tamandua.ge.GeEspera)
Muito obrigado pela atenção.
Att.