gpt4 book ai didi

hibernate - 如何从 Grails Controller 和 View 外部引用 Grails 域类字段?

转载 作者:行者123 更新时间:2023-12-01 09:40:25 25 4
gpt4 key购买 nike

我有域类:

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

在我的 JSP 中,我通过以下方式引用了一个 child :

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 session 吗?如果是这样,我该怎么做?

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

最佳答案

这与 Grails 1.0.4 中有关 Hibernates 延迟初始化的缺陷有关。作为一种解决方法,您可以强制急切获取这些属性:

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

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

顺便说一句。你真的在 JSP 中这样做吗?还是普惠制?

干杯

关于hibernate - 如何从 Grails Controller 和 View 外部引用 Grails 域类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com