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);