我有两个对象,它们有一对一和一对多的关系。
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
并且可以使用另一个
邀请代码
。或者
邀请代码
只能属于/由一个
组成员
,但可以被许多人使用/引用
组成员
的
这些表看起来设置正确-两个表都有另一个表的字段:
INVITATION_CODE.CREATOR_ID
和
GROUP_MEMBER.INVITATION_CODE_ID
.
但是,当我创建新的
邀请代码
看起来
组成员
对象正在更新
invitationCodeId
正在设置为新创建的
邀请代码
的
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
所以我不确定GORM如何/为什么要设置它。我也不确定我在定义域时的错误在哪里。当我删除
flush: true
是不是我违反了外键限制
GroupMember.invitationCode
.