[Resolvido] Ajuda com busca em um @OnetoMay na <p:dataTable>

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?

Você está usando sua entidade tbem como managedBean? péssima prática de programação. Você está misturando as camadas.

Na verdade quando cria a classe ela já vem com esta marcação, mas muito obrigado pela dica sempre valida.

Alguem pode me ajudar?

Galera conseguir modificando as propriedades do datable que ficou assim


<p:dataTable id="paneluser" value="#{dividaFaces.listofDivida}" var="divida" selection="#{dividaFaces.selectedDivida}"
                         emptyMessage="Não existe Dívida" paginator="true" rows="10">

Obrigado pela ajuda!