Um objeto diferente com o mesmo valor identificador já estava associado à sessão: 398FDbba-57B8-4D3D-B84B-4C0C0B497F02, da entidade: XXX
Já encontrei esse erro duas vezes no total, e nunca encontrei uma boa solução, e esse erro aconteceu
A razão provavelmente é bem conhecida, porque no hibernar há dois logos idênticos na mesma sessão
No entanto, se for uma entidade diferente, esse erro será reportado ao executar a operação saveOrUpdate(object).
Hehe, talvez você diga que não há diferença entre o que você diz e o que não diz, eu admito, hehe, não sei os detalhes
Por que esse erro ocorreu, caso contrário não teria sido resolvido por muito tempo, agora, dê um erro temporário
A solução é dar a pessoas como eu, que não têm como encontrar a causa raiz uma forma de continuar implementando
(Claro que está correto, mas não começa pela causa) Na verdade, é muito simples resolver esse problema, basta executar a operação session.clean()
Mas você realizou a operação saveOrUpdate(object) após a operação limpa, o que é possível
"Encontrei duas representações da mesma coleção", procurei muitas informações.
Não há uma boa explicação, e este artigo é a que mais ajuda
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Por fim, pode ser resolvido pelo método session.refresh(object), note que quando o objeto não está
Se for um objeto com dados no banco de informações, você não pode usar o fator session.refresh(object)
Para atualização, é buscar novamente o objeto da sessão de hibernação, caso não haja nenhum objeto na sessão
Se existir esse objeto, um erro será reportado, então você precisa julgar antes de usar saveOrUpdate(object).
Quebre
Claro, a solução mais fácil para esse problema é usar o merge() que vem com o Hibernate.
método. No entanto, sempre sinto que, quando encontro problemas, uso o método muito útil que vem com esse software
(comparado ao saveOrUpdate(), save(), update()) é muito desagradável. Mais tarde também descobri que esse erro frequentemente aparece em mapeamentos de um para muitos e de muitos para muitos, por favor, fique aqui
Tenha cuidado ao usar mapeamento de um para muitos e de muitos para muitos Solução de Problemas e Tratamento do Hibernado 1、Um objeto diferente com o mesmo valor de identificador já estava associado à sessão。 Motivo do erro: No hibernar, existem duas identidades idênticas na mesma sessão, mas entidades diferentes. Solução alternativa 1: session.clean() PS: Se você realizar operações para alterar o estado dos dados, como saveOrUpdate(objeto), após a operação limpa, pode receber uma exceção "Encontrados duas representações da mesma coleção". Solução alternativa 2: session.refresh(object) PS: Quando o objeto não é um objeto com dados no banco de dados, você não pode usar session.refresh(object) porque o método é buscar o objeto novamente da sessão de hibernação; se não houver objeto na sessão, um erro será reportado, então você precisa julgar antes de usar saveOrUpdate(object). Solução 3: session.merge(objecto) PS: O método próprio do Hibernate é recomendado. 2、Encontrei duas representações da mesma coleção Causa do erro: Veja 1. Solução alternativa: session.merge(object) As duas anomalias acima frequentemente aparecem no mapeamento um-para-muitos e no mapeamento muitos-para-muitos
Causas do erro:
Mito:Você não pode criar um novo objeto de usuário e depois obter as informações do usuário com base no ID de usuário e atribuí-las a esse objeto, de modo que um objeto diferente com o mesmo valor de identificador já esteja associado ao erro da sessão!!
|