Hibernate Grails更新引用

Hibernate Grails更新引用,hibernate,grails,gorm,Hibernate,Grails,Gorm,如何将对象添加到关系并将其持久化 如果我做那样的事 registrationInstance.addToActionType(id:id) 我有个例外 Unique index or primary key violation: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)"; SQL statement: insert into action_type_registra

如何将对象添加到关系并将其持久化

如果我做那样的事

registrationInstance.addToActionType(id:id)
我有个例外

Unique index or primary key violation: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)"; SQL statement: insert into action_type_registrations (action_type_id, registration_id) values (?, ?) [23001-147]
编辑:

如果我写

registrationInstance.addToActionType(ActionType.get(id))
我得到了同样的错误,但它仍然存在——那么我如何才能摆脱这个错误呢

编辑2:

如果我尝试删除对象:

registrationInstance.removeFromActionType(ActionType.get(id))
我收到以下错误(有时,并非所有情况)


必须将对象本身添加到关系中:

registrationInstance.addToActionType(ActionType.load(id))
registrationInstance.save()

看起来它没有检测到实例已经在集合中。为
ActionType
实现合理的
hashCode
equals
方法,以便Hibernate可以检测到它已经存在,而不是试图在
ACTION\u类型注册
联接表中创建重复记录。

我将使用
ActionType.load(id)
;它不从数据库中检索实例,而只是创建一个代理。由于您只设置外键,因此比加载外键并将其丢弃要便宜得多。
registrationInstance.addToActionType(ActionType.load(id))
registrationInstance.save()