gpt4 book ai didi

java - Grails Hibernate session 问题 - 未能延迟初始化集合

转载 作者:行者123 更新时间:2023-12-02 08:24:41 24 4
gpt4 key购买 nike

错误:

Error 500: null
Servlet:
URI:
Exception Message: failed to lazily initialize a collection of role: Student.lockers, no session or session was closed
Caused by: Error executing tag <g:render>: Error executing tag <g:link>: failed to lazily initialize a collection of role: com.itzik.User.carts, no session or session was closed at grails-app/views/shared/_navigation.gsp:18 at grails-app/views/layouts/home.gsp:26

所以我有一个学生(有很多储物柜)。现在,当学生登录时,安全服务会处理将他们放入 session 中。然后我的主 Controller 检查他们是否有 Activity 的储物柜。如果没有,它会为他们创建一个。现在由于某种原因,学生 –> 储物柜关系变得令人窒息。

最佳答案

您有多种选择:

  • 使用 fetch=FetchType.EAGER - 如果集合不太可能包含太多对象,而这些对象又包含其他集合,那么这是最简单的选项 - 您只需获取它们与其所有者一起从数据库中获取

  • 使用OpenSessionInView - 这将需要一些配置时间,但您最终可能需要它,即使不是针对这种特殊情况。不过,我无法确切地告诉您如何在 grails 中配置 OSIV。

  • 在 session 关闭之前(以及提交事务之前)使用 Hibernate.initialize(collection) - 这是手动的,并且会污染代码,因此不太可取

关于java - Grails Hibernate session 问题 - 未能延迟初始化集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766349/

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