gpt4 book ai didi

hibernate - Grails GORM : DuplicateKeyException on merge

转载 作者:行者123 更新时间:2023-12-02 13:49:12 26 4
gpt4 key购买 nike

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

当我调用 user.merge() 时,数据被保存,但是当我调用 resume.merge() 时,我得到了这个异常:
org.springframework.dao.DuplicateKeyException:具有相同标识符值的不同对象已与 session 相关联:[com.wizard.security.User#36];嵌套异常是 org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与 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()。

关于hibernate - Grails GORM : DuplicateKeyException on merge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com