【问题标题】:Grails - multiple objects database relationshipGrails - 多对象数据库关系
【发布时间】:2011-10-17 19:08:05
【问题描述】:

我有一个非 Grails 特定的问题,但我打算用它来实现它。 反正。我希望有一个一对多的域类关系,但我希望很多部分是几种不同的类型。

例如: 一个域Class Man 将有多个Friends(这是我们的一对多关系),但Friends 位可能是另一个Man,具有其特定的方法和属性集,或者一个Dog,或者一个@987654325 @等

我浏览了网页,但不知道如何正确命名我要搜索的内容。 非常感谢任何帮助

【问题讨论】:

  • “但 Friends 位可能是另一个具有特定方法和属性集的人,或者是狗,或者是怪物,等等。”你能解释一下吗?
  • 嗨,我想创建一个 1 t Many 关系,但希望 Many 部分不是一种固定类型。我希望能够为存储在关系的多方面的对象分配几种可能的类型。在我上面的例子中,一个男人会有一个 Friend 字段,一个 Friend 例如可以是 Monster、Pet 或 Man 类型。关于如何实现这一点以及它涉及哪些技术的任何猜测?
  • 好吧,在此期间我受到了其他一些东西的影响,但我会在实施时回复你:)

标签: grails grails-orm relationship grails-domain-class


【解决方案1】:

你可以试试这个吗?我不确定 %100 但你应该做这样的事情。你需要一个继承接口。

interface Alive{
        //just definition
     }

class Friend implements Alive {

//definition
}

class Pet implements Alive{
//definition
}

Person{
 static hasMany = [ alives: Alive]
}

【讨论】:

  • 至少看起来不错:) 谢谢。我知道 GORM 中继承的限制之一是您不能允许“可为空”字段。我会检查它,尝试实施它,然后再给你一个反馈,告诉你它是如何进行的。再次感谢!
  • 我认为您可以在继承中包含可为空的字段。您需要使用 table-per-subclass 而不是默认的 table-per-hierarchy 设置。指定静态映射 = { tablePerHierarchy false }。更多信息请参见第 5.5.2.3 节:grails.org/doc/latest/guide/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多