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

JPA Hibernate duplicando objeto que sofreu merge quando uso join fetch mas não com fetchType.Eager

Tenho uma classe Medico que possui uma lsita de objetos Especialidade num relacionamento ManyToMany unilateral sendo o Médico o dono da relação. Deixando a anotação tomany em laze padrão e fazendo o join fetch ou mesmo o left join fetch no jpql os objetos que sofreram atualização pelo merge vêm duplicados inclusive com o mesmo id e tudo na lista de busca. Os que só foram persist buscam normais sendo que no banco os registros não estão duplicados, está tudo certinho. Não existe nada de errado na query que o hibernate faz... Porém se trouxer Medico sem a lista de especialidades a lista não apresenta duplicões idem para se ao inves do join fetch usar a fetchType.Eager na anotation, aí vem tudo normal. Já dropei o Bando de Dados, reiniciei etc e mesmo assim vêm os mesmos objetos merge anteriores duplicados(deve ter um cash né?). O join fetch faz a mesma query do fetchType.eager e o merge faz uma query de update normal... Isso é um bug ou posso está cometendo algum erro?

public class Medico{ ... @ManyToMany(fetch=FetchType.EAGER) @JoinTable(name="medico_especialidade", uniqueConstraints=@UniqueConstraint(columnNames={"medico_id","especialidade_id"}), joinColumns = @JoinColumn(name = "medico_id"), inverseJoinColumns = @JoinColumn(name = "especialidade_id")) private List especialidades = new ArrayList<>(); ... }

  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 ou faça a sua própria pergunta.