当前位置: 首页 > 知识库问答 >
问题:

播放框架:JPA和延迟加载

黄聪
2023-03-14

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

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

play.api.http。HttpErrorHandlerExceptions$$anon$1:执行异常[[RuntimeException:java.lang.IllegalArgumentException:未能延迟初始化角色集合:models.UserImp.goods,无法初始化代理-无会话

如果你阅读Play文档,它会说:

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

所以,我的问题是:使用懒惰获取的最佳解决方案是什么?

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

你能给我举个例子吗?

提前感谢,

共有1个答案

史昱
2023-03-14

获取类型。延迟加载表示实体中提到FetchType的元素只能在会话中使用。您只需要在事务中使用该elment。

 类似资料:
  • 问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想

  • 看了几个网页后,我仍然不明白为什么我的@ElementCollection会急切地加载。我的理解是,默认情况下任何@ElementCollection都应该总是懒洋洋地加载。正如您所看到的,情况并非如此--您将在本文末尾看到控制台的输出。我试图使用@ElementCollection(fetch=fetchType.lazy)注释强制执行惰性加载,但这并没有改变任何事情。有没有人可以解释一下,也可

  • 问题内容: 我正在尝试在数据库中保存一个简单的对象,但这给我带来了问题。 这是我的对象类: 这就是我的控制器中的内容: 我正在为其他模型做完全相同的事情,但是我没有任何问题,仅此一项给我带来了问题。当我刷新浏览器时,我得到: 我还添加了配置,在控制台中,我得到了: 浏览器也显示了这一点:但是我不知道在哪里可以查看我的日志,那么有人也可以告诉我吗? 问题答案: 是MySQL中的保留字,您需要按以下步

  • 问题内容: 我想知道(我的Java应用程序的)播放框架版本与我的应用程序的Java版本之间是否有任何联系? 示例:如果我使用play 2.2.1并在计算机上安装了java8。我可以在代码中使用java8吗? 如果有连接。java8的第一个播放版本是什么? 谢谢你妮芙 问题答案: Play 2.3.x是提及Java 8的第一个版本,请参见此处 今天早晨,我正在与我的一位同事交谈,他发现运行2.1.x

  • 我从这个网站上读到了关于懒惰加载的内容。启用或禁用LazyLoding “如果我们请求已启用LazyLoading的学生列表,数据提供程序将从数据库中获取所有学生,但每个StudentAddress属性在显式访问该属性之前不会加载。” 此语句表示,当我将设置为true时,将不会加载相关数据。然而 如果我设置延迟加载启用=true,上面的代码返回所有特技与他们的老师和地址。我在这里错过了什么?有人能

  • 而是使用EventStream而不是ArchivedEventStream,当我运行命令alert(通知)消息时,会转到除原始发件人之外的所有连接套接字,我也可以如何发送到原始发件人。 这是我的模型和控制器,使用WebSocket 事件模型 这是控制器