【问题标题】:Grails GORM many-to-many relationshipGrails GORM 多对多关系
【发布时间】:2015-01-16 02:24:12
【问题描述】:

我想在其父User被删除时删除所有Tweets,当其父Tweet被删除时也删除协作者。其中collaborators if 类型为User

目前,推文视图不会连接协作者。我在想我是否做对了:

Tweet.groovy

User owner
static hasMany = [ collaborators : User ]
static belongsTo = User

User.groovy

static hasMany = [ tweet : Tweet ] 

【问题讨论】:

标签: grails groovy orm grails-orm


【解决方案1】:

在我看来,您缺少一种声明推文归特定用户所有的关系。现在你只会得到一个多对多的关系,我猜你不想在删除用户时删除用户合作的所有推文。

Tweet.groovy

static hasMany = [ collaborators : User ]
static belongsTo = User
User createdBy
static mappedBy = [collaborators : 'tweet']

User.groovy

static hasMany = [ tweet : Tweet ]
static mappedBy = [tweet : 'collaborators']

上面的 mappedBy 是必需的,因为您将在类之间有两种关系,并且 Grails 需要知道将哪一种用于多对多。

【讨论】:

  • 错误:在多对多关系中的域类 [class com.brewee.User] 和 [class com.brewee.Tweet] 之间没有定义所有者。示例:静态 belongsTo = com.brewee.Tweet
  • 接受的答案是正确的语法,但解决方案是相同的。去找公认的答案。我将修改我的回复以使其正确,以免混淆任何人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多