当前位置:  开发笔记 > 后端 > 正文

如何从Grails控制器和视图外部引用Grails域类字段?

如何解决《如何从Grails控制器和视图外部引用Grails域类字段?》经验,为你挑选了1个好方法。

我有域类:

class Child {
    static hasMany = [ toys : Toy ]
    String name
    Set  toys
}
class Toy {
    static belongsTo = [ owner : Child ]
    String name
}

在我的JSP中,我引用了一个孩子:

child = Child.findByName("Joe")

要么

child = Child.findById(123)

但是当我尝试访问其字段时:

child.getToys()

我收到错误:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Child.toys, no session or session was closed

我是否需要手动启动Hibernate会话?如果是这样,我该怎么做?

后续2012年2月:从Grails控制台(Grails 2.0.0)运行时也会出现此行为



1> Siegfried Pu..:

这与Grails 1.0.4中有关Hibernates Lazy Initialization的缺陷有关.作为一种解决方法,您可以强制提取这些属性:

child = Child.findByName("Joe", [ fetch: [ toys: 'eager' ] ] )

除此之外,遵循MVC原则,您应该考虑在控制器内执行这些查询,并使结果成为模型的一部分.

顺便说一句.你真的在JSP中做这个吗?或者是GSP?

干杯

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有