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()