【问题标题】:GORM list() to return superclass objects onlyGORM list() 只返回超类对象
【发布时间】:2010-12-27 00:03:18
【问题描述】:

我有一个简单的对象层次结构,我想使用 list() 查询每个对象。问题在于,由于多态性,Task.list() 会返回 Task 类型和 ComplexTask 类型的实例。

class Task {
}

class ComplexTask extends Task {
}

我意识到我可以通过拥有一个通用的抽象超类来解决我的问题,或者根据返回的类型过滤结果,但我想知道是否有一种方法可以使用动态查找器并仅获取超类实例。

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    使用默认的 table-per-hierarchy 继承策略,您可以执行以下操作:

    Task.findAll("from Task as t where t.class = 'Task'")
    

    【讨论】:

    • +1。谢谢 - 你是对的,我应该提到我正在尝试使用 tablePerHierarchy=false,尽管我可能会切换到另一个,因为我希望拥有相对较少的超类对象。
    【解决方案2】:

    我认为这与延迟加载有关,因为真正的实例没有完全加载,不仅是为了关系而且为了继承。

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2017-06-27
      相关资源
      最近更新 更多