org.hibernate.NonUniqueObjectException: um objeto diferente com o mesmo valor identificador já foi lido

O problema

Ao atualizar objetos usando o hibernate, o seguinte erro aparece:
org.hibernate.NonUniqueObjectException: um objeto diferente com o mesmo valor de identificador já estava associado à sessão:
[com.csdn.constantConfiguration.entity.Constantconfiguration # 402881456f12c32a016f131ad044001f]

Razão

Objetos diferentes na sessão têm o mesmo identificador exclusivo (NonUniqueObjectException)
na mesma sessão.Se um objeto já estiver em um estado persistente (já existe no banco de dados), agora construa um novo objeto, que pertence ao objeto persistente anterior O mesmo identificador persistente (identificador), ao atualizar, relatará um erro.
Por exemplo (pseudo código):

Object o1=objectService.getId("123");//根据id从数据库中查询出结果
Object o2=new Object();
o2.setId("123");
o2.setVelue(o1.getValue);
objectService.saveOrUpdateObject(o2);//此处报错

Solução

1. Use o método de mesclagem do hibernate para atualizar o objeto

sessionFactory.getCurrentSession().merge(object);

2. Limpe a sessão primeiro e atualize

sessionFactory.getCurrentSession().clear();
objectService.saveOrUpdateObject(o2);
Publicado 19 artigos originais · Curtidas2 · Visitas 721

Acho que você gosta

Origin blog.csdn.net/qq_40977118/article/details/104371551
Recomendado
Clasificación