如何让grails在类中保留一个对象列表?

时间:2014-04-30 15:30:35

标签: grails groovy gorm

我有以下内容:

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信息?

1 个答案:

答案 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