Problema com Select = java.lang.NumberFormatException: For input string: "variacao"

21 respostas
D

Bom galera, estou tendo esse erro no momento de exibir a consulta na view, mas o estranho é que “VARIAÇÃO” é um int e em momento algum eu transformo ele em String.

public class DadosExercicio implements Serializable{

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private Long id;
	private int peso;
	private int repeticao;
	private int descanso;
	private int serie;
	private boolean imprime;
	private int variacao;

Fev 16, 2012 6:09:42 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException Grave: Error Rendering View[/Pages/Relatorios/imprimetreino.xhtml] java.lang.NumberFormatException: For input string: "variacao" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.parseInt(Integer.java:527) at javax.el.ListELResolver.coerce(ListELResolver.java:173) at javax.el.ListELResolver.getValue(ListELResolver.java:52) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstValue.getValue(AstValue.java:169) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) 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 com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) 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 org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:58) at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46) at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:185) at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:108) at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763) 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 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.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at br.com.treino.filter.ControleFiltro.doFilter(ControleFiltro.java:33) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)

21 Respostas

M

coloca o codigo da view pra gente ver.

D

É o local onde esta o erro:

<h:outputText value="Variação: "/>
<h:outputText value="#{imprimeBean.treinoGeral.dadostreino.variacao}"/>
Tabela
public class TreinoGeral implements Serializable{

	@Id@GeneratedValue(strategy=GenerationType.AUTO)
	private Long id;
	private int sessoestotal;
	private int sessoesrealizadas;
	private int sessoesrestantes;
	private String situacao;
		
	@ManyToOne
	private Cliente cliente;
	
	@OneToMany(mappedBy = "treinogeral") 
	private List<DadosExercicio> dadostreino;

Tabela

public class DadosExercicio implements Serializable{

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private Long id;
	private int peso;
	private int repeticao;
	private int descanso;
	private int serie;
	private boolean imprime;
	private int variacao;
M

<h:outputText value="#{imprimeBean.treinoGeral.dadostreino.variacao}"/>

dadostreino eh um list e nao um objeto de dados exercicio, vc precisa pegar o objeto antes de usar o seu atributo.

entendeu? nao consegui explicar melhor

H

mauricioadl:
<h:outputText value="#{imprimeBean.treinoGeral.dadostreino.variacao}"/>

dadostreino eh um list e nao um objeto de dados exercicio, vc precisa pegar o objeto antes de usar o seu atributo.

entendeu? nao consegui explicar melhor

Isso realmente é dificil de explicar.

Ao fazer #{imprimeBean.treinoGeral.dadostreino.variacao}, sendo que dadostreino é uma lista, qual dos objetos da lista seria utilizado?

D

Opa … foi muito bem claro … eu já havia pensado nisso … apenas n tinha certeza …
Mas vlw … vou fazer as alterações …

D

Então Jakefrog … foi erro meu mesmo, não preciso exibir esse dado nesse lugar, o list eu espero em um datalist, pensei em exibir fora dele … mas vou fazer lá mesmo …

D

Agora estou com esse problema no Select:

Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: treinogeral is not mapped [SELECT t, de FROM  treinogeral t, dadosexercicio de WHERE t.id = de.treinogeral AND t.id =:id AND de.imprime =:imprime]

Meu Select

Query query = this.entityManager.createQuery("SELECT t, de FROM  treinogeral t, dadosexercicio de" +
				" WHERE t.id = de.treinogeral" +
				" AND t.id =:id" +
				" AND de.imprime =:imprime");
		 query.setParameter("id", id);
		 query.setParameter("imprime", true);
D
Galera, a questão do Select resolvi, era erro no nome das Tabelas :
FROM  TreinoGeral tg, DadosExercicio
Porém agora tenho um erro de Cast:
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.treino.model.TreinoGeral
	at br.com.treino.repository.ImprimeRepository.treino(ImprimeRepository.java:46)
	at br.com.treino.bean.ImprimeBean.consultatreino(ImprimeBean.java:48)
	at br.com.treino.bean.ImprimeBean.setTreinoSelecionado(ImprimeBean.java:75)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:142)
	at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
	at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:204)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
	... 30 more
Não sei, mas acho que é a forma que estou armazenando a consulta que esta me fazendo esse erro ..:
ArrayList<DadosExercicio> exercicios = new ArrayList<DadosExercicio>();
exercicios = (ArrayList<DadosExercicio>) query.getResultList();
			 
TreinoGeral geral = new  TreinoGeral();
geral = (TreinoGeral) query.getSingleResult();
			 
geral.setDadostreino(exercicios);
			 
TreinoGeral treinoGeral = new TreinoGeral(geral.getSessoestotal(), geral.getSessoesrealizadas(),
			 geral.getSessoesrestantes(), geral.getCliente(), geral.getDadostreino());

return treinoGeral;
M

qual eh o codigo dessas linhas:

at br.com.treino.repository.ImprimeRepository.treino(ImprimeRepository.java:46)

at br.com.treino.bean.ImprimeBean.consultatreino(ImprimeBean.java:48)

at br.com.treino.bean.ImprimeBean.setTreinoSelecionado(ImprimeBean.java:75)
D
at br.com.treino.repository.ImprimeRepository.treino(ImprimeRepository.java:46)
geral = (TreinoGeral) query.getSingleResult();

/***************************************/

at br.com.treino.bean.ImprimeBean.consultatreino(ImprimeBean.java:48
tg = repository.treino(treinoGeral.getId());

/**************************************/
at br.com.treino.bean.ImprimeBean.setTreinoSelecionado(ImprimeBean.java:75)
consultatreino();
Vou demonstrar o processo de busca: 1º Exibo um DataTable e o usuario escolherá o Treino a ser consultado, que sera realizado por esse método:
public void setTreinoSelecionado(TreinoGeral treinoSelecionado) {
	this.treinoSelecionado = treinoSelecionado;
	setTreinoGeral(treinoSelecionado);
	consultatreino();//MÉTODO DE BUSCA
}
2º Efetuando a busca:
public void consultatreino(){
		
	System.out.println("CT");
		
	ELContext context = FacesContext.getCurrentInstance().getELContext();
	this.entityManager = (EntityManager) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(context, null, "entityManager");
	ImprimeRepository repository = new ImprimeRepository(this.entityManager);
		
	TreinoGeral tg = new TreinoGeral();
	tg = repository.treino(treinoGeral.getId());
	setTreinoGeral(tg);
	setDadosExercicios(tg.getDadostreino());
		
}
3º Montagem do Select:
@SuppressWarnings("unchecked")
public TreinoGeral treino(Long id){
		
	System.out.println("RT");
		
	Query query = this.entityManager.createQuery("SELECT tg, de FROM  TreinoGeral tg, DadosExercicio de" +
				" WHERE tg.id = de.treinogeral" +
				" AND tg.id =:id" +
				" AND de.imprime =:imprime");

		 query.setParameter("id", id);
		 query.setParameter("imprime", true);
			 
		 ArrayList<DadosExercicio> exercicios = new ArrayList<DadosExercicio>();
		 exercicios = (ArrayList<DadosExercicio>) query.getResultList();
			 
		 TreinoGeral geral = new  TreinoGeral();
		 geral = (TreinoGeral) query.getSingleResult();
		 
		 geral.setDadostreino(exercicios);
			 
		 TreinoGeral treinoGeral = new TreinoGeral(geral.getSessoestotal(), geral.getSessoesrealizadas(),
				 geral.getSessoesrestantes(), geral.getCliente(), geral.getDadostreino());
			 
	 return treinoGeral;
}

Como eu disse anteriormente, não sei se é a forma correta de fazer o retorno..

M

faz um teste assim.
pega o Object que o singleResult esta trazendo e da um getClass pra ver que tipo de classe ele traz.

D
Fiz o seguinte:
ArrayList<DadosExercicio> exercicios = new ArrayList<DadosExercicio>();
exercicios = (ArrayList<DadosExercicio>) query.getResultList();
			 
	 for (DadosExercicio d : exercicios){
	      System.out.println("D: "+ d.getExercicio().getNome());
	 }
TreinoGeral geral = new  TreinoGeral();
geral = (TreinoGeral) query.getSingleResult();
System.out.println("G: "+ geral.getClass());

Porém ele não chega nem ao laço.
Log Hibernate:

Hibernate: 
    /* SELECT
        tg,
        de 
    FROM
        TreinoGeral tg,
        DadosExercicio de 
    WHERE
        tg.id = de.treinogeral 
        AND tg.id =:id 
        AND de.imprime =:imprime */ select
            treinogera0_.id as id8_0_,
            dadosexerc1_.id as id9_1_,
            treinogera0_.cliente_id as cliente6_8_0_,
            treinogera0_.sessoesrealizadas as sessoesr2_8_0_,
            treinogera0_.sessoesrestantes as sessoesr3_8_0_,
            treinogera0_.sessoestotal as sessoest4_8_0_,
            treinogera0_.situacao as situacao8_0_,
            dadosexerc1_.descanso as descanso9_1_,
            dadosexerc1_.exercicio as exercicio9_1_,
            dadosexerc1_.imprime as imprime9_1_,
            dadosexerc1_.peso as peso9_1_,
            dadosexerc1_.repeticao as repeticao9_1_,
            dadosexerc1_.serie as serie9_1_,
            dadosexerc1_.treinogeral as treinoge9_9_1_,
            dadosexerc1_.variacao as variacao9_1_ 
        from
            TreinoGeral treinogera0_ cross 
        join
            DadosExercicio dadosexerc1_ 
        where
            treinogera0_.id=dadosexerc1_.treinogeral 
            and treinogera0_.id=? 
            and dadosexerc1_.imprime=?
Fev 17, 2012 12:25:56 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
Advertência: /Pages/Relatorios/imprimetreino.xhtml @101,30 target="#{imprimeBean.treinoSelecionado}": Error writing 'treinoSelecionado' on type br.com.treino.bean.ImprimeBean
javax.el.ELException: /Pages/Relatorios/imprimetreino.xhtml @101,30 target="#{imprimeBean.treinoSelecionado}": Error writing 'treinoSelecionado' on type br.com.treino.bean.ImprimeBean
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:139)
	at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:206)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIData.broadcast(UIData.java:1093)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.treino.filter.ControleFiltro.doFilter(ControleFiltro.java:33)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.treino.model.DadosExercicio
	at br.com.treino.repository.ImprimeRepository.treino(ImprimeRepository.java:45)
	at br.com.treino.bean.ImprimeBean.consultatreino(ImprimeBean.java:48)
	at br.com.treino.bean.ImprimeBean.setTreinoSelecionado(ImprimeBean.java:75)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:142)
	at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
	at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:204)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
	... 30 more
M

assim o erro vai continuar prq vc continua tentando dar um cast nele, troca isso:

TreinoGeral geral = new TreinoGeral(); geral = (TreinoGeral) query.getSingleResult(); System.out.println("G: "+ geral.getClass());

por isso:

System.out.println(query.getSingleResult().getClass());
F

Cara seu select ta retornando um array de Object contendo TreinoGeral e DadosExercicio como pode ser visto na query:

"SELECT tg, de FROM  TreinoGeral tg, DadosExercicio de"

Eu tentaria algo do tipo:

public TreinoGeral treino(Long id){  
          
    Query query = this.entityManager.createQuery("from  TreinoGeral tg left join tg.dadostreino as dt with dt.imprime = :imprime WHERE  tg.id =:id");  
  
     query.setParameter("id", id);  
     query.setParameter("imprime", true);                 
           
     return  (TreinoGeral) query.getSingleResult();  
}

Não testei, segui esta referencia: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins

D

Mauricio:

class [Ljava.lang.Object;

Lucas, vou testar …

M

Diego Adriano:
Mauricio:

class [Ljava.lang.Object;

Lucas, vou testar …

O Lucas ja matou a charada!

D
CT
RT
Hibernate: 
    /* 
from
    TreinoGeral tg 
left join
    tg.dadostreino as dt with dt.imprime = :imprime 
WHERE
    tg.id =:id */ select
        treinogera0_.id as id11_0_,
        dadostrein1_.id as id10_1_,
        treinogera0_.cliente_id as cliente6_11_0_,
        treinogera0_.sessoesrealizadas as sessoesr2_11_0_,
        treinogera0_.sessoesrestantes as sessoesr3_11_0_,
        treinogera0_.sessoestotal as sessoest4_11_0_,
        treinogera0_.situacao as situacao11_0_,
        dadostrein1_.descanso as descanso10_1_,
        dadostrein1_.exercicio as exercicio10_1_,
        dadostrein1_.imprime as imprime10_1_,
        dadostrein1_.peso as peso10_1_,
        dadostrein1_.repeticao as repeticao10_1_,
        dadostrein1_.serie as serie10_1_,
        dadostrein1_.treinogeral as treinoge9_10_1_,
        dadostrein1_.variacao as variacao10_1_ 
    from
        TreinoGeral treinogera0_ 
    left outer join
        DadosExercicio dadostrein1_ 
            on treinogera0_.id=dadostrein1_.treinogeral 
            and (
                dadostrein1_.imprime=?
            ) 
    where
        treinogera0_.id=? limit ?
Hibernate: 
    /* load br.com.treino.model.Exercicio */ select
        exercicio0_.id as id9_0_,
        exercicio0_.nome as nome9_0_ 
    from
        Exercicio exercicio0_ 
    where
        exercicio0_.id=?
Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.treino.model.TreinoGeral
	at br.com.treino.repository.ImprimeRepository.treino(ImprimeRepository.java:67)
	at br.com.treino.bean.ImprimeBean.consultatreino(ImprimeBean.java:48)
	at br.com.treino.bean.ImprimeBean.setTreinoSelecionado(ImprimeBean.java:75)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:142)
	at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
	at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:204)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
	... 30 more
F

Ele continua retornando o array de object? Então eu faria assim, iterava a lista query.getResultList() que é um array de object onde a primeira posição contém o TreinoGeral e a segunda o DadoExercicio. Tambem teria um Map<Integer,TreinoGeral> que mapeia uma instancia de TreinoGeral de acordo com o codigo dele, na iteração eu verificaria se o mapa ja possui o TreinoGeral correspondente, caso sim pego a instancia do mapa e adiciona o DadoExercicio a sua lista de dadostreino, caso não eu crio uma nova instancia de treino e adiciono ao mapa, conseguiu pegar a ideia?

D

Bem, podemos dizer que o problema do Select resolvemos, mas agora estou com o problema de como abastecer minha view com os Dados retornados.

CT
RT
Hibernate: 
    /* 
from
    TreinoGeral tg 
left join
    tg.dadostreino as dt with dt.imprime = :imprime 
WHERE
    tg.id =:id */ select
        treinogera0_.id as id8_0_,
        dadostrein1_.id as id9_1_,
        treinogera0_.cliente_id as cliente6_8_0_,
        treinogera0_.sessoesrealizadas as sessoesr2_8_0_,
        treinogera0_.sessoesrestantes as sessoesr3_8_0_,
        treinogera0_.sessoestotal as sessoest4_8_0_,
        treinogera0_.situacao as situacao8_0_,
        dadostrein1_.descanso as descanso9_1_,
        dadostrein1_.exercicio as exercicio9_1_,
        dadostrein1_.imprime as imprime9_1_,
        dadostrein1_.peso as peso9_1_,
        dadostrein1_.repeticao as repeticao9_1_,
        dadostrein1_.serie as serie9_1_,
        dadostrein1_.treinogeral as treinoge9_9_1_,
        dadostrein1_.variacao as variacao9_1_ 
    from
        TreinoGeral treinogera0_ 
    left outer join
        DadosExercicio dadostrein1_ 
            on treinogera0_.id=dadostrein1_.treinogeral 
            and (
                dadostrein1_.imprime=?
            ) 
    where
        treinogera0_.id=?
Hibernate: 
    /* load br.com.treino.model.Exercicio */ select
        exercicio0_.id as id11_0_,
        exercicio0_.nome as nome11_0_ 
    from
        Exercicio exercicio0_ 
    where
        exercicio0_.id=?
Select Ficou assim:
@SuppressWarnings("unchecked")
public List<TreinoGeral> treino(Long id){
		
System.out.println("RT");
Query query = this.entityManager.createQuery("from TreinoGeral tg left join tg.dadostreino as dt" +
			" with dt.imprime = :imprime" +
			" WHERE tg.id =:id");    
	    
	     query.setParameter("id", id);    
	     query.setParameter("imprime", true);
	     
	     return query.getResultList();
}

E agora, como farei para pegar os Dados retornados??
Preciso abastecer um OBJ do tipo TreinoGeral e um ArrayList de DadosExercicio!

F

Porque não utiliza assim:

return  (TreinoGeral) query.getSingleResult();

Ele ja retornaria o TreinoGeral com a lista de DadosExercicio, eu só não sei te informar se essa lista trás apenas os DadosExercicio com imprimir=true pois nunca utilizei esse “with” do HQL, da uma debugada ai para confirmar

D

Galera, não consigo arrumar essa parada nem com reza braba … rsrs

Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to br.com.treino.model.TreinoGeral
(TreinoGeral) query.getSingleResult();

Não consigo Debugar meu TomCat não sobe …

Criado 16 de fevereiro de 2012
Ultima resposta 17 de fev. de 2012
Respostas 21
Participantes 4