【问题标题】:Play Framework: JPA and Lazy Loading播放框架:JPA 和延迟加载
【发布时间】:2017-09-07 19:18:30
【问题描述】:

我正在使用 Play Framework v.2.6.3 和用于 SQL 访问的 JPA 解决方案。

当我在我的实体上设置 FetchType.Lazy 时,我收到以下错误消息:

play.api.http.HttpErrorHandlerExceptions$$anon$1: 执行异常[[RuntimeException: java.lang.IllegalArgumentException: 无法懒惰地初始化角色集合:models.UserImp.goods,无法初始化代理 - 没有会话

如果您阅读 Play Docs,它会说:

这可能意味着您的域对象(聚合根,在 DDD 术语中)具有对存储库的内部引用并调用它以返回实体和值对象的列表,而不是保持会话打开并使用基于 JPA 的延迟加载。

所以,我的问题是:使用 Lazy fetching 的最佳解决方案是什么?

我不明白,我需要如何处理。

你能举个例子吗?

提前致谢,

【问题讨论】:

    标签: java hibernate jpa playframework lazy-loading


    【解决方案1】:

    FetchType.Lazy 加载表示提及 FetchType 的实体元素只能在会话内部使用。您只需在事务内部使用该元素。

    【讨论】:

    • 我知道 Lazy Fetching 的原理,是的,当我设置 Eager Fetching 时,这个问题得到了解决。但是,为什么在 DDD 术语中我不使用这种延迟加载并且总是使用 Eager Fetching? Play Framework 是否像文档所说的那样使用这个原则?我需要使用什么?
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多