我有兩個具有一對一和一對多關係的對象。Gorm一對一和一對多
class GroupMember {
/**
* InvitationCode used to join this Group
*/
InvitationCode invitationCode
static constraints = {
// group creator member object won't have used an invitation code
invitationCode(nullable: true)
}
}
class InvitationCode {
/**
* GroupMember who created the code, not used the code
*/
GroupMember creator
// I tried removing this, it has no effect.
static hasMany = [members: GroupMember]
}
基本上,我有一個GroupMember
誰擁有一個InvitationCode
並且可以使用另一個InvitationCode
。或者,一個InvitationCode
只能屬於對/被創建,通過一個GroupMember
,但也可以使用/引用許多GroupMember
的
的表格看起來像他們建立正確的 - 這兩個表有字段其他: INVITATION_CODE.CREATOR_ID
和GROUP_MEMBER.INVITATION_CODE_ID
。
然而,當我創建一個新的InvitationCode
似乎GroupMember
對象被更新,invitationCodeId
被設置爲新創建的InvitationCode
的id
。
GroupMember creator = new GroupMember(
invitationCode: null // group creator - didn't use an invitation code
)
creator.save(flush: true)
InvitationCode invitationCode = new InvitationCode(
creator: creator
)
invitationCode.save(flush: true)
GroupMember _creatorMember = GroupMember.findById(creator.id)
assert _creatorMember.invitationCode == invitationCode // true??
我從來沒有設置creator.invitationCode
所以我不知道如何/爲什麼是格姆設置它。我也不確定我的錯誤在定義域名的位置。當我刪除flush: true
的時候,我在GroupMember.invitationCode
上得到了外鍵約束違規。
它看起來像是在工作,我根本不需要包含成員,只是'creator:'none''完成了這個訣竅。謝謝! – Townsfolk