svz*_*svz 2 grails hibernate grails-orm
我有两个对象:User和Resume.简历有一个User user字段.在我的代码中,我首先得到一个user对象并对其进行一些更改.如果Resume.findByUser(user)存在,我会收到简历并在那里做一些更改.
如果我打电话user.save(),resume.save()我得到一个例外,说会话中有同一个对象的另一个引用,所以我开始使用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.
我很感激你对这个问题的帮助,谢谢.
小智 5
由于GORM是基于休眠构建的,当你在简历上调用merge时,它将级联到现场用户.
当您在一个事务中调用user.merge()然后调用resume.merge()时,在调用resume.merge()时,您的用户字段在DB中的版本比在resume实例上保留的版本更新.
我建议你在进行更改和合并之前调用resume.user.refresh()或resume.refresh().
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |