我有以下内容:
GroupMember.groovy
public class GroupMember{
String userName
String role
}
GroupProfile.groovy
public class GroupProfile{
List<GroupMember> groupMembers = new ArrayList<GroupMember>()
}
GroupProfileController.groovy
public class GroupProfileController{
def createProfile{
GroupMember groupOwner = new GroupMember()
groupOwner.userName = "testUser"
groupOwner.role = "OWNER"
groupOwner.save()
GroupProfile groupProfile = new GroupProfile()
def members = grouProfile.groupMembers
members.add(groupOwner)
groupProfile.save()
GroupProfile.list() //This list contains my GroupMember instance with the correct info
redirecT(action: myProfiles)
}
def myProfiles={
GroupProfile.list() //This list contains my groupProfile that I made but no GroupMember info
}
}
我的GroupProfile
不会保存我的GroupMember
信息。如何让GroupProfile
保存GroupMember
信息?
答案 0 :(得分:2)
在grails中表示此关系的常规方法是:
public class GroupProfile {
static hasMany = [groupMembers: GroupMember]
}
这将在GroupProfile
上自动生成一个名为addToGroupMembers
的方法,该方法将创建关联。保存GroupProfile
也会级联到群组成员,因此您只需在添加成员后调用保存一次。
请注意,groupMembers
集合实际上是Set
的实例,不一定会保留顺序。您可以将集合显式声明为List
以保留顺序,但它需要额外的开销,包括额外的数据库列,因此请确保这正是您想要的。
查看GORM部分中的grails手册:http://grails.org/doc/latest/guide/GORM.html