经过大量谷歌搜索后,我没有找到问题的答案,除了降级hibernate版本。但我在2003年的类似帖子中遇到了这种情况。
问题:
//in the first session I do
session1.save(entity);
session1.getTransaction().commit();
session1.close();
//in the second session (after client response), I get back the serialized copy of the entity
entityCopy = deserialize(jsonString);
entityCopy.setEntityDetail(newDetail); //1
session2.merge(entityCopy); //EXCEPTION!
如果注释字符串1,一切正常!
例外:
IllegalStateException :存储实体时发生错误#4700实体副本#4700已分配给其他实体@ 2e7b134a
问题:
PS
答案 0 :(得分:1)
我以下一种方式解决了这个问题:在对其进行一些更改之前,必须合并反序列化的实体。 (唯一的变化是在2个字符串中):
//in the first session I do
session1.save(entity);
session1.getTransaction().commit();
session1.close();
//in the second session (after client response), I get back the serialized copy of the entity
entityCopy = deserialize(jsonString);
entityCopy = (Entity) session.merge(entityCopy); //2
entityCopy.setEntityDetail(newDetail);
session2.merge(entityCopy); //all works fine