Datatable de uma VIEW Problema An Error Occurred: For input string - JSF + JPA + EJB

Pessoal, estou com um problema em uma view para listar os dados de uma Lista.

Meu ManagegBean

[code]
@ManagedBean(name = “completeController”)
@SessionScoped
public class CompleteInscricao implements Serializable {

private List quadras = null;


@EJB    
private geomais.importacao.DAO.ImovelCorrelacaoFacade ejbFacade;
public class Quadra {

    Integer cdDistrito;
    Integer cdSetor;
    Integer nrQuadra;

    public Integer getNrQuadra() {
        return nrQuadra;
    }

    public void setNrQuadra(Integer nrQuadra) {
        this.nrQuadra = nrQuadra;
    }

    public Integer getCdDistrito() {
        return cdDistrito;
    }

    public void setCdDistrito(Integer cdDistrito) {
        this.cdDistrito = cdDistrito;
    }

    public Integer getCdSetor() {
        return cdSetor;
    }

    public void setCdSetor(Integer cdSetor) {
        this.cdSetor = cdSetor;
    }

    public Quadra() {
    }
}

public List<Quadra> getQuadras() {
        List consQuadras =  ejbFacade.findQuadras(1, 1);
        quadras = (List<Quadra>) consQuadras;
   
    return quadras;
}

public void setQuadras(List quadras) {
    this.quadras = quadras;
}

public CompleteInscricao() {
}

}[/code]

Meu Método findQuadras

public List<T> findQuadras(Integer cdDistrito, Integer cdSetor)  {         
        Query query = getEntityManager().createQuery("SELECT distinct i.cdDistrito, i.cdSetor, i.nrQuadra FROM ImovelCorrelacao i WHERE i.cdDistrito = :cdDistrito and i.cdSetor = :cdSetor");
        query.setParameter("cdDistrito",cdDistrito);
        query.setParameter("cdSetor",cdSetor);
        System.out.println("Consulta Parametros: "+ query);
        List<T> result = (List<T>) query.getResultList();        
        if (result != null && !result.isEmpty()) {
            return result;
        } else {
            return null;                
        }
    }

Minha View

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:a4j="http://richfaces.org/a4j">

    <head />

    <body>
        <ui:composition template="/template.xhtml">
            <ui:define name="title"> Relatórios de Quadras</ui:define>
            <ui:define name="header">Imprimir Relatórios de Quadras</ui:define>
            <ui:define name="body">
               <h:form>                                        
                   <rich:dataTable var="quad" value="#{completeController.quadras}" style="width:800px">
                            <rich:column>
                                <f:facet name="header"><h:outputText value="Quadra" /></f:facet>
                                <h:outputText value="#{quad.nrQuadra}" />
                            </rich:column>                      
                        </rich:dataTable>
                </h:form>
            </ui:define>
        </ui:composition>
    </body>
</html>

Ocorre o erro: For input string: “nrQuadra”


An Error Occurred: 
For input string: "nrQuadra"
+- Stack Trace
java.lang.NumberFormatException: For input string: "nrQuadra"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Integer.parseInt(Integer.java:449)
	at java.lang.Integer.parseInt(Integer.java:499)
	at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:375)
	at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:195)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:116)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:163)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
	at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:55)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at org.richfaces.renderkit.RendererBase.renderChildren(RendererBase.java:278)
	at org.richfaces.renderkit.AbstractTableBaseRenderer.encodeColumn(AbstractTableBaseRenderer.java:90)
	at org.richfaces.renderkit.DataTableRenderer.encodeRow(DataTableRenderer.java:213)
	at org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:89)
	at org.ajax4jsf.model.SequenceDataModel.walk(SequenceDataModel.java:69)
	at org.richfaces.component.UIDataAdaptor.walk(UIDataAdaptor.java:810)
	at org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:99)
	at org.richfaces.renderkit.AbstractRowsRenderer.processRows(AbstractRowsRenderer.java:111)
	at org.richfaces.renderkit.AbstractTableRenderer.encodeTableRows(AbstractTableRenderer.java:146)
	at org.richfaces.renderkit.AbstractTableRenderer.doEncodeChildren(AbstractTableRenderer.java:202)
	at org.richfaces.renderkit.RendererBase.encodeChildren(RendererBase.java:157)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:662)

Detalhes:

  1. Já debuguei e vi que a Lista consQuadras é populada;
  2. Também a Lista quadras é preenchida;
  3. Porém o Tipo do de dado da Lista fica Object[] e não Quadra, mas eu converto a lista na linha 46 do código do ManagedBean;
  4. A Classe Quadras eu crio dentro do prório ManagedBEan, mas ja tentei criar fora e não adiantou;
  5. Este metodo findQuadras retorna quadras de uma Classe/Entidade de banco de dados chamada ImovelCorrelacao;
  6. Quando criei o código da View a EL me trouxe as variáveis da Lista de Quadras constantes na Classe(cdSetor, cdDistrito e nrQuadra);
  7. Tenho um outro ManagedBean que utiliza a mesma entidade e funciona, somente este que estou convertendo em outra classe da este erro.

Não sei o que fazer para resolver, pois iniciei a poucos meses nesta área de programação.

Agradeço a ajuda que vier.

Seu erro está aqui:

Por algum acaso “i.nrQuadra” está como int na sua classe e String no banco? Ou vice versa?

Pior que não, veja só o trecho da Entity, esta uma copia fiel da tabela no banco.

[code]

public class ImovelCorrelacao implements Serializable {
private static final long serialVersionUID = 1L;
@Basic(optional = false)
@NotNull
@Column(name = “cd_distrito”, nullable = false)
private int cdDistrito;
@Basic(optional = false)
@NotNull
@Column(name = “cd_setor”, nullable = false)
private int cdSetor;
@Basic(optional = false)
@NotNull
@Column(name = “nr_quadra”, nullable = false)
private int nrQuadra;
@Basic(optional = false)
@NotNull
@Column(name = “nr_lote”, nullable = false)
private int nrLote;
@Basic(optional = false)
@NotNull
@Column(name = “nr_unidade”, nullable = false)
private int nrUnidade;
@Size(max = 50)
@Column(name = “inscricao”, length = 50)
private String inscricao;
@Id
@Basic(optional = false)
@NotNull
@Column(name = “nr_cadastro_imobiliario”, nullable = false)
private Integer nrCadastroImobiliario;[/code]

Acho que o meu problema esta que não converte meu List consQuadras para um List, quando debugo a List aparece do tipo Object[] e não Quadra.

A Não ser que minha List retorne uma String, mas não deveria.

Abaixo a imagem do Debug mostrando o que tem no consQuadra

… e abaixo mostrando que populou q Quadra, mas o tipo do objeto não é QUADRA como deveria.

Vc consegue parar nesse return?if (result != null && !result.isEmpty()) { return result Ele popula toda a lista com sucesso?

Só estou perguntando pq vc mostrou o debug de um resultado.

Como essa coluna está mapeada no banco?

Esta populando, mas tbm traz o tipo Object[]; com os elementos preenchidos;

faz um select ae

select distinct nquadra from tabela

veja c só vai trazer números.

Veja c vai voltar também algum valor null.

Abaixo o SQL, ta retornando int

É cara, ta macabro isso aí.

Faz um teste aí então.

No seu método que lista todo mundo, coloca um CAST (em sql server é assim. qual seu banco mesmo?) para number.

seria tipo

SELECT …, CAST(nQuadra AS NUMERIC) from xxxxxx…

Essa seria a sintax para SQL Server. Veja qual a sintax para seu banco.

Olá,

Sei que tem tempo, mas para não criar outro tópico, alguém conseguiu encontrar a solução para esse problema?
Estou tendo um parecido, ao tentar acessar os dados de um dos registros do dataTable. Ele carrega a tabela, mas se eu selecionar um registro para ver maiores detalhes ele me mostra a exceção de NumberFormatException para um dos campos.

O curioso é que já usei esse mesmo dataTable em outra tela do sistema e funciona normalmente. E sei que ele é uma string no banco e na aplicação.

Estou usando JSF 2 e primefaces 3.2. O dataTable é do Primefaces.

Agradeço ajuda.