1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JPA/Hibernate misturando as informações, trocando as bolas, como pode?

Tenho duas persistente units no caso dois banco de dados : BancoX e BancoY

Uma entidade chamada Pessoa com uma associção @ManyToOne a entidade Filhos

E por fim um List<Pessoas> que é onde vou juntar as informações.

faço um select carrego todas as pessoas com seus filhos do bancoX e jogo pro List.

faço um outro select carrego todas as pessoas com seus filhos do bancoY e adiciono no List.

Problemas: As Pessoas do BancoY (segundo banco) que foram jogadas na List, fica com os Filhos associado errados! fica trocado não corresponde ao o que ta no banco de dados!

Interessante é que as primeiras pessoas que foram carregadas do BancoX fica certinho. Ou quando eu carrego somente um dos banco na lista também fica certinho, por exemplo se eu carregar só o BancoY também fica certo.

Na boa tá muito anormal isso, já aconteceu essa bizarrice com alguém?

  • curiosidade. se vc colocar em 2 listas diferentes. Os dados ficam ok? Vc ja verificou se há mesma pessoa nos 2 bancos ? a qtd de objetos pessoa na lista apos as 2 cargas é igual qtdPessoaBd1 + qtdPessoaBd2 ?

    Carvalho   11 de out de 2013
  • As Pessoas no banco1 começam com o id = 1, e no banco2 também começam com id=1, então se for pelo id repete um monte, mas apesar de ficar com muitos ids iguais as pessoas são diferentes. a quantidade apos as 2 cargas fica correto sim

    netoSJB   11 de out de 2013
  • Acredito que o problema ocorra porque as entidades devem estar gerenciadas e como os ids são os mesmos como você mencionou o jpa/hibernate está se perdendo...

    malucocelo   11 de out de 2013
  • mesmo tendo ids iguais não faz sentido, pois eu monto os objetos antes de por na lista

    netoSJB   14 de out de 2013
  • Faz todo sentido, pois o contexto de persistência entende que dois objetos com o mesmo Id correspondem à mesma identidade.

    Rodolfo Mendes   16 de out de 2013
Mostrar todos os 10 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa hibernate java-ee java ou faça a sua própria pergunta.