如何将一个Object添加到关系并保持它?
如果我这样做
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))
我得到了相同的错误,但它仍然存在 - 所以我怎样才能摆脱这个错误?
EDIT2:
如果我尝试删除对象:
registrationInstance.removeFromActionType(ActionType.get(id))
我接受了错误(有时,不是总是)
Eindeutiger Index oder Primarschlüssel verletzt: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)" Unique index or primary key violation: "PRIMARY_KEY_E7 ON PUBLIC.ACTION_TYPE_REGISTRATIONS(ACTION_TYPE_ID, REGISTRATION_ID)"; SQL statement: update action_type_registrations set action_type_id=? where registration_id=? and action_type_idx=? [23001-147]
答案 0 :(得分:1)
您必须将对象本身添加到关系中:
registrationInstance.addToActionType(ActionType.load(id))
registrationInstance.save()
答案 1 :(得分:1)
看起来它没有检测到实例已经在集合中。为hashCode
实现合理的equals
和ActionType
方法,以便Hibernate可以检测到它已经存在,而不是尝试在ACTION_TYPE_REGISTRATIONS
连接表中创建重复记录。