我有两个对象:UserResume 。简历有 User user field 。 在我的代码中,我首先得到 user对象并对其进行一些更改。万一Resume.findByUser(user)存在我得到简历并在那里做了一些更改。
如果我打电话user.save()resume.save()我收到一个异常,说 session 中有另一个对同一对象的引用,所以我开始使用 merge() .

当我打电话user.merge()时数据已保存,但是当我调用resume.merge()时我得到这个异常:
org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was already associated with the session: [com.wizard.security.User#36]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.wizard.security.User#36]

我不知道该怎么办。看起来问题出在 resume.user对象引用与 user 相同的对象。

如果您能帮助解决此问题,我将不胜感激,谢谢。

请您参考如下方法:

由于 GORM 是基于 hibernate 构建的,因此当您在 resume 上调用 merge 时,它​​将向下级联到字段 user

当您在一个事务中调用 user.merge() ,然后调用resume.merge()时,在调用resume.merge()时,您的用户字段在数据库中的版本比resume实例中保存的版本更新。

我建议您在进行更改和合并之前调用resume.user.refresh()或resume.refresh()。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!