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

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)

coloca o codigo da view pra gente ver.

É o local onde esta o erro:

<h:outputText value="Variação: "/>
<h:outputText value="#{imprimeBean.treinoGeral.dadostreino.variacao}"/>[/code]

Tabela
[code]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;[/code]

Tabela

[code]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;

<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

[quote=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
[/quote] Isso realmente é dificil de explicar.

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

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

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 …

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);

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 …:

[code]ArrayList exercicios = new ArrayList();
exercicios = (ArrayList) 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;[/code]

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)

[code]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();[/code]
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:

[code]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());

}[/code]

3º Montagem do Select:

[code]@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;

}[/code]

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

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

Fiz o seguinte:

[code]ArrayList exercicios = new ArrayList();
exercicios = (ArrayList) 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());
[/code]

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

[code]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

[/code]

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());

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

Mauricio:

class [Ljava.lang.Object;

Lucas, vou testar …

[quote=Diego Adriano]Mauricio:

class [Ljava.lang.Object;

Lucas, vou testar …[/quote]

O Lucas ja matou a charada!

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=?[/code]


[code]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

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?

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:

[code]@SuppressWarnings(“unchecked”)
public List 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();

}[/code]

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