Erro ao renderizar a View

12 views
Skip to first unread message

Dionatan Hovoruski

unread,
Oct 31, 2011, 1:14:45 AM10/31/11
to jav...@googlegroups.com
Bom dia pessoal

Antes de tudo quero agradecer ao pessoal do grupo que sempre está ajudando nas minhas dúvida.

Bom sou novato em JSF + Hibernate. Pela primeira vez precisei fazer uma SQL pelo hibernate.

A sql que eu fiz retorna todos os alunos aniversariantes do mês. Bom, a SQL está funcionando perfeitamente no postgreSQL. Porém quando tento exibir o retorno
em um datatable acontece o seguinte erro:

java.lang.NumberFormatException: For input string: "nome"
	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é encontrei um tópico em um forum com um usuário com o mesmo problema que o meu, porém o mesmo estava sem a solução.

Bom segue o meu controller e o trecho da minha view:

public List<Fisica> getAniversariantes() {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
this.aniversariantes = (List<Fisica>) session.createSQLQuery(
" select pessoa.id,"
+ " pessoa.nome, "
+ " fisica.nascimento "
+ " from fisica"
+ " inner join pessoa"
+ " on pessoa.id = fisica.id"
+ " where "
+ "extract (month from fisica.nascimento) = extract(month from now())"
+ " and "
+ "extract (day from fisica.nascimento) >= extract(day from now())"
+ " order by extract(day from fisica.nascimento), nascimento").list();

session.close();

return aniversariantes;
}

------------------------------

                                    <p:dataTable value="#{homeController.aniversariantes}" var="aniversariante">
                                        <p:column style="width: 70px"> 
                                            <f:facet name="header"> 
                                                Nome 
                                            </f:facet> 
                                            <h:outputText value="#{aniversariante.nome}"/> 
                                        </p:column> 
                                        <p:column style="width: 70px"> 
                                            <f:facet name="header"> 
                                                Nascimento 
                                            </f:facet> 
                                            <h:outputText value="#{aniversariante.nascimento}"/> 
                                        </p:column> 
                                    </p:dataTable>

Att
Dionatan Hovoruski

Igor Thiago

unread,
Oct 31, 2011, 1:37:36 AM10/31/11
to jav...@googlegroups.com
Amigão, já que você está usando Hibernate não precisa fazer o join se tiver mapeado o relacionamento na entidade.

Basta carregar a Pessoa , e fazer pessoa.getFisica(). get atributos .... o hibernate já trabalha com os joins.

Você está criando uma lista do objetos do Tipo física, e está enviando pra ele atributos diferentes pela query.

--
Igor Thiago Vulcão da Silva
Analista de Sistemas - Assembléia Paraense
Gerente de Projeto - Sistema ZEUS
Desenvolvedor WEB
WebDesigner
Contato: (91) 8120-1949

Dionatan Hovoruski

unread,
Oct 31, 2011, 1:58:13 AM10/31/11
to jav...@googlegroups.com
Ola Thiago

Sim a classe pessoa está mapeada como sendo pai da classe fisica.

Mudei minha SQL para

        this.aniversariantes = (List<Fisica>) session.createSQLQuery(
                  " select fisica.id        "
                + "   from fisica"

                + "  where "
                + "extract (month from fisica.nascimento) = extract(month from now())"
                + "    and "
                + "extract (day from fisica.nascimento) >= extract(day from now())"
                + "  order by extract(day   from fisica.nascimento), nascimento").list();

Eliminei os joins, agora está aparecendo o seguinte erro:

javax.el.PropertyNotFoundException: /index.xhtml @63,89 value="#{aniversariante.id}": Property 'id' not found on type java.lang.Integer
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
	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)

Reply all
Reply to author
Forward
0 new messages