[ RESOLVIDO ] - Loop repetindo objeto  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

Existe alguma possibilidade de um "for" fica repetindo o mesmo objeto em um loop?

Ex:


Gostaria de saber se isso já aconteceu com alguém? Porque tive um problema deste e gostaria de identificar o que aconteceu se o problema foi do banco que retornou linhas iguais ou se foi do java?

This message was edited 1 time. Last update was at 04/01/2010 21:49:48


www.bau-de-dev.com
Daniels
JavaGuru

Membro desde: 25/07/2008 14:19:39
Mensagens: 217
Offline

Dessa maneira duvido muito que exista um jeito de repetir o mesmo item do for. O "for tradicional" até teria como, mas se você fez assim sua lista contém elementos repetidos, muito provavelmente.

Depure o programa e veja o conteúdo que tem na lista, aí você tira suas dúvidas.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 19489
Localização: Curitiba/PR
Offline

Também nunca vi isso.

Aliás, nunca vi uma linguagem não fazer o que a documentação diz que faz (exceto em linguagens da MS).

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

A minha query não me retorna linhas repitidas, só aparece registros repetidos quando eu faço o loop no list que veio do banco.
Eu estou usando spring com jpa.
O meu código é simples.


Eu realmente não vejo nada de errado com o código acima para está repetindo registro, achei que fosse o banco, mas quando executo a query ela me retorna linhas diferentes.

www.bau-de-dev.com
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 19489
Localização: Curitiba/PR
Offline

Como está implementado o método hashCode() da classe Costumer?

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

Está sendo implementado desta maneira:


Sendo que o idChannel pode se repetir o idCustomer e o msisdn não, só se repete o idCustomer e o msisdn se o idChannel for diferente, por exemplo:

This message was edited 2 times. Last update was at 04/01/2010 14:40:35


www.bau-de-dev.com
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

Verifique se o hibernate / JPA está retornando um resultado multrow (duplicação de linhas no JOIN).



flws
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

fantomas nesta classe não tem joins apessar de ter ids...
Achei aonde está o erro pela sua sugestão.
O erro estava na configuração do bean, ou seja, nas annotations. Abaixo segue como estava:

Como tinha falado anteriormente, o idChannel se repete várias vezes e o @Id estava neste campo, quando mudei a annotation de lugar parou de repetir as linhas, mas ai acabo caido em outro problema, o idCustomer também se repete em menor quantidade que o idChannel, como resolver isso?
Gostaria, se possível, se alguém com mais experiência explicasse o que aconteceu, por que as linhas repetiram quando a annotation fica no idChannel?

This message was edited 2 times. Last update was at 04/01/2010 15:25:23


www.bau-de-dev.com
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline

Opa!

Então...

Olhando um pouco mais o teu código notei que vc utiliza uma lista do tipo Set para retornar o resultado da consulta. Acontece que este tipo de lista não deveria permitir elementos repetidos; para isto, no seu caso, o mecanismo da lista deveria utilizar o método equals da sua entidade para atingir este objetivo.

Como vc diz que a lista possui elementos repetidos estou suspeitando que o métodos equals na sua classe deve estar com problemas; lembrando que o ideal é que sempre que vc sobreescrever o método hash sobreescreva tambem o método equals.

Tente verificar o conteúdo da tabela correspondente para se certificar que realmente as linhas se repetem. O critério para perceber se uma linha está realmente repetida é verificar sua chave primária (acho que vc sabe disso mas....), estou começando a pensar que a sua tabela possui uma chave primária composta se isto for verdade vc terá que montar uma classe correspondente a sua chave e utilizar a anotação @Embedded na sua entidade.

flws

Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

Eu coloquei o set para o java tirar as linhas repetidas, só para ver se o problema era no java. E acabou dando certo porque o número de registro retornado era diferente da query.

E a minha tabela usa pk composta sim. Vou ter que fazer uma classe para essa PK. Eu só tenho dúvida nesta parte como ficaria o mapeamento desta classe com a entidade?

www.bau-de-dev.com
fantomas
GUJ Master
[Avatar]

Membro desde: 24/04/2008 16:10:55
Mensagens: 1506
Localização: Terra (maior parte do tempo)
Offline


Dá uma olhada no conteúdo deste link para vc ter uma idéia.

http://www.java2s.com/Tutorial/Java/0355__JPA/EmbeddedCompoundPrimaryKey.htm

Vale a pena explorar mais esta tema em livros / tutoriais


flws
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 585
Offline

Valeu pela ajuda, está tudo funcionando agora.
Obrigado a todos!

www.bau-de-dev.com
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

ViniGodoy wrote:Também nunca vi isso.

Aliás, nunca vi uma linguagem não fazer o que a documentação diz que faz (exceto em linguagens da MS).

Bem observado...

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team