我有一个父子关系,其中父母有很多孩子,孩子属于父母。获取模式是默认(懒惰)。当我获取Parent时,sql相当于“select * from child where parent_id =?”也被执行 - 也就是说,它获取所有相关孩子的每个领域。 (这是懒惰的行为吗?)我需要抑制对孩子的所有字段的查询,因为除非我明确地通过id获取孩子,否则我不想得到clob。我怎么能影响这个?我是否必须创建另一个没有clob属性的“summary”域子类?
答案 0 :(得分:1)
我认为您已经找到了延迟加载问题,所以我不会对此发表评论。
我处理只从孩子那里获取某些数据的问题的方法是编写一个自定义的hql查询,它只返回你感兴趣的值。所以如果你只需要孩子的id做一些像
这样的查询Child.findAll("select c.id from Child c where parent = :parent", [parent: theParent])
见http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html。
答案 1 :(得分:0)
你是否知道它是一次性获得它们的事实?我问这个是因为,一旦你开始使用调试器,println,日志记录来查看数据,为了向你展示内容,Grails认为你已经请求了这些数据,并且会去获取它。所以它可能是懒惰的,但是当你试图验证它没有被提取时,你告诉Grails去获取它。
答案 2 :(得分:0)
但是,我明白了这一点。 “show”的默认视图是访问子属性。 现在,我在渲染为XML或JSON时也会看到相同的行为,但这可能是一个类似的问题 - 正在审问子属性?