【问题标题】:TablePerHierarchy always false for abstract classes?TablePerHierarchy 对于抽象类总是假的?
【发布时间】:2010-02-17 12:26:54
【问题描述】:

根据the Grails GORM guide,域类的子类与父类共享同一个表,除非 tablePerHierarchy 设置为 false。

我找不到有关以下映射语句是否因为“abstract”关键字而被忽略的信息

abstract class Item implements Comparable{
  static mapping = {
    tablePerHierarchy true
  }
...

我的数据库不包含 Item 表,并且每个子类一个表(tablePerHierarchy 的预期状态==false)。

我是否需要使项目具体化但在验证中不允许它?我计划在创建表单中使用

【问题讨论】:

    标签: inheritance grails groovy grails-orm abstract


    【解决方案1】:

    我相信你已经解决了这个问题,但是我今天遇到了同样的问题,所以我想我会插话的。

    在 Grails/Gorm 文档的第 5.2.3 节中,它声明“GORM 支持从抽象基类和具体的持久 GORM 实体继承” (http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html)。

    有趣的是,他们没有在本节的示例中提供抽象类的示例。

    我尝试过,在我的层次结构中有一个抽象类(都在层次结构的顶部,然后在其中一个分支的下方)。每次我尝试持久化作为任何抽象子类的对象时,都会失败。

    我首先从层次结构的顶部删除了抽象关键字,我得到了更积极的结果。最后,我从层次结构中的所有分支中删除了 abstract 关键字,一切正常。

    因此,我的结论是,在实践中,您不能在 Gorm 层次结构中使用 abstract 关键字。

    所以我计划的层次结构是一些简单的数据类型,例如: 抽象类型

    必须成为: 具体类型

    即使我无意直接创建 Type 或 Numeric 的实例。

    为了披露,我仍在使用 Grails 1.1.2,直到我觉得 1.2 足够稳定为止。

    【讨论】:

      猜你喜欢
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 2014-09-16
      • 2012-12-02
      相关资源
      最近更新 更多