孩子懒惰得到孩子ID

我有一个父母 - 子女关系,父母有许多孩子,孩子属于父母。 获取模式是默认(懒惰)。 当我得到父,SQL等价于“select * from child where parent_id =?” 也被执行 - 也就是说,它会获取所有相关子项的每个字段。 (这是懒惰的行为?)我需要压制所有的孩子的字段的查询,因为那里有clob,我不想得到,除非我明确地通过id获取孩子。 我怎样才能做到这一点? 我是否必须创建另一个没有clob属性的“摘要”域子类?


我想你知道了懒加载问题,所以我不会对此发表评论。

我处理仅从孩子中获取某些数据的问题的方法是编写一个自定义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。


你知道一个事实,它是一次让他们全部? 我问这个问题是因为,一旦你开始使用调试器,println,日志记录来查看数据,为了向你显示内容,Grails认为你已经请求了这些数据,并且会去取数据。 所以它可能是懒惰的加载,但是当你试图验证它没有被抓取时,你告诉Grails去获取它。


但是,我明白了这一点。 “show”的默认视图正在访问子属性。 现在,我在用XML或JSON呈现时也会看到相同的行为,但这可能是一个类似的问题 - 子属性正在被审问?

链接地址: http://www.djcxy.com/p/24329.html

上一篇: Child lazy get of child ids

下一篇: Grails GORM and MYSQL cascade delete problem