javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] ConvertEntity Seam Error:o valor não é válido

Subject: Re: [javasf] ConvertEntity Seam Error:o valor não é válido
From: Rafael Ponte
Date: Wed, 27 Oct 2010 17:34:40 -0300
Thiago,

Se os objetos estão na mesma session do Hibernate/Jpa então o equals e hashCode nem precisariam ser implementados, mas o conselho é que você sempre implemente, pois independente do framework ele deve funcionar :-)

2010/10/27 thiago araujo <thiagok2@xxxxxxxxx>
Já havia feito isso do get no Id... e já havia feito as impl do equals e hashcode apenas com id...
mas refiz agora usando login e id...


@Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getLogin() == null) ? 0 : getLogin().hashCode());

        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (this.getClass() != obj.getClass())

            return false;
        Usuario other = (Usuario) obj;
        if (getId() == null) {
            if (other.getId() != null)
                return false;
        } else if (!getId().equals(other.getId()))
            return false;
        if (getLogin() == null) {
            if (other.getLogin()!= null)
                return false;
        } else if (!getLogin().equals(other.getLogin()))
            return false;
        return true;
    }


Mesmo erro ainda...
Vocês entenderam o que expliquei sobre os obejtos iguais na mesma sessão que o jpa não está conseguindo se resolver??

Fiz uma impl paralela com os velhos selectItems.... q nojo do jsf 1.2 achei q havia me livrado... mas vamos lá tentar resolver sem essa gambi

2010/10/27 Rafael Ponte <rponte@xxxxxxxxx>

Jair,

Em alguns casos pode rolar problemas com os proxy's gerados pelo Hibernate, logo além de ser necessário se utilizar de getters em vez do próprios atributos é também necessário mudar como a instância das classes são comparadas.

É um problema bem incomum, mas que muitas vezes ocorre que você perde muito tempo para tentar resolver!


2010/10/27 Jair Domingues <jairsyonet@xxxxxxxxx>
thiago ...vc chegou a testar com o uso dos metodos get's das propriedades?? isto deveria resolver seu problema.
Tive a mesma situacao q vc e resolvi desta forma.

[]s
jait


Em 27 de outubro de 2010 17:47, thiago araujo <thiagok2@xxxxxxxxx> escreveu:

Tem um discução na thead do fórum do seam, mas não tá claro... como de fato foi resolvido.
http://seamframework.org/Community/EntityConverterValueIsNotValid


2010/10/27 thiago araujo <thiagok2@xxxxxxxxx>
O erro tem haver com o seguinte:

Quando seleciono na lista alguma entidade que está de alguma forma relacionada a instancia q esta com a nova propriedade da o erro. Isto é, se já há outra instancia na sessão e ela eh selecionada na lista da problema. Por exemplo, basta apenas eu selecionar o usuário logado na lista que acontece o erro.

Não sei como evitar isso já que implementei o equals e hashcode. Provavelmente tenho que configurar algo na sessão, ter outro entityManager... coisa parecida.


2010/10/27 thiago araujo <thiagok2@xxxxxxxxx>
Rafael

Coloquei a consulta em um componente no escopo de aplicação... mas nãi funcionou.

Jair
Segue o código do equals e hashcode...
Como disse gerado pelo eclipse...

@Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((ativo == null) ? 0 : ativo.hashCode());
        result = prime * result
                + ((dataCadastro == null) ? 0 : dataCadastro.hashCode());
        result = prime * result + ((ddd == null) ? 0 : ddd.hashCode());
        result = prime * result + ((email == null) ? 0 : email.hashCode());
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result + ((login == null) ? 0 : login.hashCode());
        result = prime * result + ((nome == null) ? 0 : nome.hashCode());
        result = prime * result + ((senha == null) ? 0 : senha.hashCode());
        result = prime * result
                + ((telefone == null) ? 0 : telefone.hashCode());
        result = prime * result + ((tipo == null) ? 0 : tipo.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Usuario other = (Usuario) obj;
        if (ativo == null) {
            if (other.ativo != null)
                return false;
        } else if (!ativo.equals(other.ativo))
            return false;
        if (dataCadastro == null) {
            if (other.dataCadastro != null)
                return false;
        } else if (!dataCadastro.equals(other.dataCadastro))
            return false;
        if (ddd == null) {
            if (other.ddd != null)
                return false;
        } else if (!ddd.equals(other.ddd))
            return false;
        if (email == null) {
            if (other.email != null)
                return false;
        } else if (!email.equals(other.email))
            return false;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        if (login == null) {
            if (other.login != null)
                return false;
        } else if (!login.equals(other.login))
            return false;
        if (nome == null) {
            if (other.nome != null)
                return false;
        } else if (!nome.equals(other.nome))
            return false;
        if (senha == null) {
            if (other.senha != null)
                return false;
        } else if (!senha.equals(other.senha))
            return false;
        if (telefone == null) {
            if (other.telefone != null)
                return false;
        } else if (!telefone.equals(other.telefone))
            return false;
        if (tipo == null) {
            if (other.tipo != null)
                return false;
        } else if (!tipo.equals(other.tipo))
            return false;
        return true;
    }

2010/10/27 Jair Domingues <jairsyonet@xxxxxxxxx>

Ola ...

Voce pode postar a implementacao do metodo equals das suas entidades?

[]s
jair


Em 27 de outubro de 2010 17:07, Rafael Ponte <rponte@xxxxxxxxx> escreveu:

Thiago,

Normalmente esse erro ocorre devido a identidade da entidade ou escopo conversacional muito curto da lista de opções que está sendo iterada.

2010/10/27 thiago araujo <thiagok2@xxxxxxxxx>

Pessoal,

No seguinte cenário...

<xthml>
               <h:selectOneMenu id="selectTecnico_" value="#{visitaHome.tecnico}">
                    <s:selectItems var="tec"
                        value="#{visitaHome.visitadores}"     label="#{tec.nome}" />
                    <s:convertEntity />
                </h:selectOneMenu>
</xhtml>

A classe tecnico é uma Entity que tem implementado o equals e hashcode por sugestão do eclipse. O visitaHome tem o escopo
default e é um EntityHome. Uso o seam 2.2 e já venho usando a dois anos a segunda versão, nunca havia me deparado com esse problema.

O trecho acima dá erro de validação. Já tentei diversas alternativas mas não resolvi. Então gostaria da colaboração de vocês.

vlw galera
--
Thiago Araújo

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Rafael Ponte
http://www.rponte.com.br

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Jair Domingues - jairsyonet@xxxxxxxxx

51-3632-4543
51-8209-1593



--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Thiago Araújo



--
Thiago Araújo



--
Thiago Araújo

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Jair Domingues - jairsyonet@xxxxxxxxx

51-3632-4543
51-8209-1593


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Rafael Ponte
http://www.rponte.com.br

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Thiago Araújo

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Rafael Ponte
http://www.rponte.com.br

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil
<Prev in Thread] Current Thread [Next in Thread>