【问题标题】:Grails automatic relational fetchingGrails 自动关系获取
【发布时间】:2011-06-09 21:38:37
【问题描述】:

可以在 GORM / Grails 中进行自动关系获取吗?

class Person {
    static hasMany = [cars : Car]
}
class Car {
    static belongsTo = [owner : Person]
}

然后像这样使用这种关系:

person = Person.get(1);
person.cars.each() { print it; }

【问题讨论】:

    标签: grails orm grails-orm fetching-strategy


    【解决方案1】:

    答案是:是的,这行得通。

    但我建议阅读GORM Gotchas,以全面了解 Grails 引擎盖下的 Hibernate 基础知识。或者有时您会看到“令人惊讶”的行为。

    【讨论】:

      【解决方案2】:

      您可以通过这种方式启用预取:

      static mapping = {
         cars fetch: 'join'
      }
      

      http://grails.org/doc/latest/ref/Database%20Mapping/fetch.html

      【讨论】:

      • 谢谢,我已经看到了这个并且想知道为什么当我渲染为 JSON 时它不起作用。它似乎不适用于 JSON 渲染,仅输出类和 ID。
      • 这是一种性能优化,与急切或延迟加载无关。这与惰性相同,因为 OpenSessionInViewInterceptor 会惰性加载集合。 Grails 这样做是为了避免序列化大量意外数据。我倾向于从域对象构建映射列表,因此我可以控制发送给客户端的内容,但这不仅仅是“将 foo 渲染为 JSON”。但是您可以使用深度转换器来获得您想要的东西,例如manbuildswebsite.com/2010/02/08/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多