Olá Galera estou com um problema Tenho duas classes que existe um relacionamento @OneToMany, (Pagamento e Divida) abaixo o código:
@ManagedBean
@RequestScoped
@Entity
@Table(name="pagamento")
public class Pagamento implements Serializable {
....
@ManyToOne(cascade=CascadeType.ALL)
private Divida coddivida;
//Getters e Setters
}
@ManagedBean
@RequestScoped
@Entity
@Table(name="divida")
public class Divida implements Serializable{
...
/**
* Uma despesa pode ter vários pagamentos e um pagamento pertence a
* uma despesa.
*/
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="PAGAMENTO_ID")
private List<Pagamento> pagamento;
//Getters e Setters
E busco esses dados atraves do cógido abaixo:
public List<Divida> getDividas(){
return getCleanListOfObjects(Divida.class,"from Divida divida");
}
Para implementar na <p:dataTable> como está abaixo:
<p:dataTable id="paneluser" value="#{dividaFaces.listofDivida}" var="divida" selection="#{dividaFaces.selectedDivida}"
rowKey="#{divida.id}" selectionMode="sigle" emptyMessage="Não existe Dívida!" paginator="true" rows="10">
<f:facet name="header">
Panel de Dívidas Cadastradas
</f:facet>
<p:column id="pagar" headerText="Tela de Pagamento">
<p:commandButton value="Pagar">
<p:ajax oncomplete="pagetela.show()" update="telapgamento"/>
</p:commandButton>
</p:column>
<f:facet name="footer">
Financé v#{sistema.VERSION}
</f:facet>
Porém ao colocar para rodar dá o erro abaixo:
Hibernate:
/*
from
Divida divida */ select
divida0_.idconta as idconta0_,
divida0_.datadeinicio as datadein2_0_,
divida0_.descricaodespesa as descrica3_0_,
divida0_.empresa as empresa0_,
divida0_.exercicio as exercicio0_,
divida0_.observacao as observacao0_,
divida0_.operacaobancaria as operacao7_0_,
divida0_.parcela as parcela0_,
divida0_.tipolancamento as tipolanc9_0_,
divida0_.vencimento as vencimento0_
from
divida divida0_
Hibernate:
/* load one-to-many br.com.finance.model.Divida.pagamento */ select
pagamento0_.PAGAMENTO_ID as PAGAMENTO5_0_2_,
pagamento0_.idpagamento as idpagame1_2_,
pagamento0_.idpagamento as idpagame1_2_1_,
pagamento0_.coddivida_idconta as coddivida4_2_1_,
pagamento0_.datapagamento as datapaga2_2_1_,
pagamento0_.valorpagamento as valorpag3_2_1_,
divida1_.idconta as idconta0_0_,
divida1_.datadeinicio as datadein2_0_0_,
divida1_.descricaodespesa as descrica3_0_0_,
divida1_.empresa as empresa0_0_,
divida1_.exercicio as exercicio0_0_,
divida1_.observacao as observacao0_0_,
divida1_.operacaobancaria as operacao7_0_0_,
divida1_.parcela as parcela0_0_,
divida1_.tipolancamento as tipolanc9_0_0_,
divida1_.vencimento as vencimento0_0_
from
pagamento pagamento0_
left outer join
divida divida1_
on pagamento0_.coddivida_idconta=divida1_.idconta
where
pagamento0_.PAGAMENTO_ID=?
Lista de Dividas: [1 - Divida de teste]
Mar 25, 2013 8:09:46 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/menu/principal.xhtml]
java.lang.ClassCastException: br.com.finance.model.Divida cannot be cast to java.util.List
at org.primefaces.component.datatable.DataTable.findSelectedRowKeys(DataTable.java:977)
at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:624)
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:234)
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:196)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:881)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:851)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:439)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
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 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
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:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
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)
E já procurei e não conseguir achar um solução, alguém poderia me ajudar?