首页 > 解决方案 > 用于保存的 Grails GORM 域类关系

问题描述

下面是结构化的域类

class User {
   String username
   String password
   String emailAddress
   static hasMany = [memberships: Membership]
}

class Membership {
   String name
   Integer memberPlanId
   static belongsTo = [user: User]
}

//MemberPlan data have 2 types of plan existed in DB
class MemberPlan {
   String type
   Float amount
}

我希望从 MemberPlan 中引用 Membership 的“memberPlanId”。我如何从那里设置,它应该在 belongsTo 下?这个“memberPlanId”属性的保存查询是如何进行的?

new User(username: 'input_username', password: 'input_password', emailAddress: 'input_emailAddress')
  .addToMemberShips(new Membership(name: 'input_name', memberPlanId: ?))
  .save()

标签: grailsgrails-orm

解决方案


您需要按如下方式编辑会员域

class Membership {
   String name
   MemberPLan memberPlan                 // this is basically a belongsTo relation
   static belongsTo = [user: User]
}

要保存新用户,您可以使用

new User(username: 'input_username', password: 'input_password', emailAddress: 'input_emailAddress')
  .addToMemberShips(new Membership(name: 'input_name', memberPlan: MemberPlan.get(1)))
  .save()

MemberPlan.get(1) 将从数据库中获取 id = 1 的记录

希望有帮助


推荐阅读