[Resolvido] Mostrar combo selecionada (Seam)

2 respostas
S

Olá pessoal,

Na minha aplicação Seam, estou tendo um problema para mostrar a combo selecionada (quando vou editar algum registro) depois que implementei os métodos Hash e Equals.

Antes de implementá-los, funcionava na boa, mas como vi na apresentação do Rafael Ponte que não implementá-los é um dos 10 grandes erros de um programador JSF, resolvi colocá-los antes que dê algum problema (que aliás, nem sei quais poderiam ser, hehehe).

Eu usei o gerador de códigos do Eclipse para os métodos Hash e Equals, as classes são Telephone e TelephoneCompany, onde na aplicação Telephone eu seleciono uma combo de TelephoneCompany

1 - Código (Hash e Equals) da classe Telephone: http://pastebin.com/f72aba889
2 - Código (Hash e Equals) da classe TelephoneCompany: http://pastebin.com/f476755b4
3 - Código da Combo de TelephoneCompany: http://pastebin.com/f3a744c49

Lembrando novamente que funciona perfeitamente se eu tirar os métodos Equals e Hash.

Agradeço a ajuda!
Abraços!

2 Respostas

HarryPodre

Qual erro? Gerou exception? Se tiver posta pra gente.

S

Valeu pela boa vontade Harry, mas já consegui resolver o problema, vou passar a transcrição do Gilliard Cordeiro, da lista JSF:

[i]"entre os problemas que muitas vezes você terá se não implementar esses
métodos está esse que você tem agora =)
provavelmente você não tinha problemas antes por estar usando Seam. Ele
simplesmente detona muitas dos problemas que a gente poderia ter.

Agora sobre o teu problema, teste trocar os
(this.)propriedade.equals(other.propriedade) por
(this.)getPropriedade().equals(other.getPropriedade())
Veja também se você precisa mesmo de todos os campos no equals, algumas
vezes, por se tratar de entities, basta que a chave primária seja comparada.

Só para explicar o porque da sugestão, é que as vezes o other está lazy e o
teu this pode nao estar, e aí quando você compara acessando diretamente a
propriedade o hibernate não dispara o carregamento, e mesmo sendo a mesma
entidade o equals falha. Por isso as vezes olhar a chave primária resolve,
pois entidades têm isso como identificador único, além dela não vir lazy. "[/i]

E era exatamente isso!!

Abraços

Criado 30 de novembro de 2009
Ultima resposta 30 de nov. de 2009
Respostas 2
Participantes 2