Erro estranho

11 respostas
joaosavio

executePhase(RESTORE_VIEW 1,com.sun.faces.context.FacesContextImpl@f255c7) threw exception java.lang.ClassCastException: cannot assign instance of org.hibernate.proxy.pojo.cglib.SerializableProxy to field model.beans.EnvolvimentoID.pessoa of type model.beans.PessoaVO in instance of model.beans.EnvolvimentoID

Na primeira vez que chamo da página o método abaixo vai normal, aí qualquer coisa q eu fizer depois dá esse erro

public String buscarPorPessoa() {       
    if (!buscaNPessoa.equals(null)) {
        PessoaDAO pessoaDAO = new PessoaDAO();
        ArrayList<PessoaVO> tabela = new ArrayList<PessoaVO>();
        tabela = pessoaDAO.busca(buscaNPessoa); //pega a pessoa com id
        if (tabela.size() == 1) {
            nome = tabela.get(0).getNome();
            tabelaBuscaE = new ArrayList<EnvolvimentoVO>();
            EnvolvimentoDAO envolvimentoDAO = new EnvolvimentoDAO();               
            tabelaBuscaE = envolvimentoDAO.buscaPorPessoa(tabela.get(0));
        }
    }
    return null;
}

tabelaE é o bean de uma tabela na página

Foda que já ta tudo implementando Serializable

11 Respostas

E

Salve

Seu problema esta no mapeamento do seu bean (PessoalVO) que esta com alguma inconsistencia com a PK ou id da tabela. Da uma olhada ou posta seus codigos.

Outra coisa, nao faca a validação de algo que seja null usando o .equals, esse metodo valida se uma String é ou nao vazia.

Procura fazer algo assim

if(buscaNPessoa != null) {
    // faça algo.
}

Abs espero ter ajudado.

joaosavio

Arquivos de mapeamento

EnvolvimentoVO

<hibernate-mapping>
    <class name="model.beans.EnvolvimentoVO" schema="PUBLIC" table="ENVOLVIMENTOS">
        <composite-id class="model.beans.EnvolvimentoID" name="compositeID">
            <key-many-to-one class="model.beans.FatoVO" column="COD_FATO" name="fato"/>
            <key-many-to-one class="model.beans.PessoaVO" column="COD_PESSOA" name="pessoa"/>
        </composite-id>
        <property name="cond_pessoa" type="java.lang.String"/>
        <property name="categoria" type="integer"/>
    </class>
</hibernate-mapping>

PessoaVO

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27/05/2006 16:45:18 by Hibernate Tools 3.1.0 beta3 -->
<hibernate-mapping>
    <class name="model.beans.PessoaVO" schema="PUBLIC" table="PESSOAS">
        <id name="id" type="long">
            <column name="COD_PESSOA"/>
            <generator class="sequence">
                <param name="sequence">pessoas_cod_pessoa_seq</param>
            </generator>
        </id>
        <property name="nome" type="java.lang.String"/>
        <property name="sexo" type="integer"/>
        <property name="nacionalidade" type="java.lang.String"/>
        <property name="naturalidade" type="java.lang.String"/>
        <property name="idade" type="integer"/>
        <property name="data_nascimento" type="java.util.Calendar"/>
        <property name="cor_pele" type="java.lang.String"/>
        <property name="profissao" type="java.lang.String"/>
        <property name="estado_civil" type="integer"/>
        <property name="nome_mae" type="java.lang.String"/>
        <property name="numero" type="integer"/>
        <property name="egresso" type="integer"/>
        <property name="bairro" type="java.lang.String"/>
        <property name="cidade" type="java.lang.String"/>
        <property name="estado" type="java.lang.String"/>
        <property name="cep" type="java.lang.String"/>
        <property name="escolaridade" type="integer"/>
        <property name="passagem" type="integer"/>
        <property name="perfil" type="java.lang.String"/>
        <property name="complemento" type="java.lang.String"/>
        <property name="rg" type="java.lang.String"/>
        <property name="rua_ave" type="java.lang.String"/>
        <property name="observacao" type="java.lang.String"/>
        <set inverse="true" name="fatos">
            <key column="cod_pessoa"/>
            <one-to-many class="model.beans.EnvolvimentoVO"/>
        </set>
    </class>
</hibernate-mapping>
E

e o PessoaVO

joaosavio
public class PessoaVO implements Serializable{
    private long id;  
    private String nome;
    private int sexo;
    private String nacionalidade;
    private String naturalidade;
    ...

A classe é grande

joaosavio

Mais alguem?

E

Onde está o mapeamento do VO ?

Onde voce identifica quem é o id ? as colunas, com seus tamanhos ?

Se não vc acaba não usando corretamente o hibernate

joaosavio

não entendi o q vc quer cara

já coloquei os mapeamentos acima

Abração

Focao

acho q essa linha não tem na mapeamento do EnvolvimentoVO

&lt;key-many-to-one class="model.beans.PessoaVO" column="COD_PESSOA" name="pessoa"/&gt;
joaosavio

vc diz para tirar???

abração

joaosavio

up

joaosavio

up

Criado 26 de janeiro de 2009
Ultima resposta 30 de jan. de 2009
Respostas 11
Participantes 3