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

具有关联且没有延迟加载的后加载实体?

壤驷志学
2023-03-14

这是我的pb。

我有一个实体游戏和一个实体控制台
这是一个多个关联。

为了提高性能,我在同一查询中加载游戏和控制台,如下所示:

$this->_em->getRepository('MyBundle:Console')
        ->createQueryBuilder('console')
        ->join('console.game', 'game')
        ->select('game', 'console')
        ->getQuery()->getResult();

当我使用$console时-

当我使用postLoad事件时,每个$控制台-

在条令网站上,我发现了以下建议:

"请注意,当使用Doctrine\ORM\AbstractQuery#iterate()时,postLoad事件将在对象被水合后立即执行,因此不能保证关联被初始化。合并使用Doctrine\ORM\AbstractQuery#iterate()和postLoad事件处理程序是不安全的。"

所以,有人知道如何使用后加载事件和完整的水合实体?我不想偷懒。

但这不是我的情况


共有1个答案

何正德
2023-03-14

这一行为实际上在第2.5条中有所改变。从2.5开始,所有关联都应在postLoad事件中加载。原则2.5应解决您的问题,参考:

http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/changelog/migration_2_5.html#events-postload现在在加载关联后触发

 类似资料:
  • 问题内容: 如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。 问题: 在MVC Web应用程序中处理Hibernate对象的最佳实用解决方案是什么? 细节: 我正在使用Hibernate,并希望在可能的情况下利用延迟加载。 我正在使用MVC风格的webapp。 我讨厌获得延迟加载初始化异常。 我讨厌不得不在事务之间重新连接Hibernate对象。 选项: 渴望装载

  • 问题内容: 我以这样一种方式进行了JPA设置:如果我不使用延迟加载,则几乎将加载整个数据库。我也直接在模型上使用序列化,因此有时我需要初始化代理。 我只想在集合上使用延迟加载。急切地获取某些奇异实体的事实就很好了。但是,无论我如何尝试设置集合,我都永远不会得到代理集合,而我总是会得到完全加载的集合。 这是一些示例代码: 所以这里的问题是,当我检查调试器时,答复的persistantBag-list

  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 本文向大家介绍关于延迟加载JavaScript,包括了关于延迟加载JavaScript的使用技巧和注意事项,需要的朋友参考一下 JavaScript的延迟加载是那些在web上,能让你想抓狂地去寻找解决方案的问题之一。 很多人说“那就用defer”或“async”,甚至有些人说“那就将你的javascript代码放在页面代码底部”。 上述方法都不能解决在web页面完全加载后,再加载外部js的问题。上

  • 问题内容: 请考虑以下示例: Web应用程序为每个登录用户创建一个用户对象。该对象具有的简单属性,… 每个用户也可以拥有一个。考虑到获取用户非常昂贵,因此我们不希望在用户登录时不设置用户汽车。相反,我们希望在用例需要时获得汽车。 为了实现这一点,我们创建了一个用户pojo: 登录后的初始用户: 每个需要用车的用例都可以轻松获得: 但是,我一直认为通过这种方式,我的User对象不再是简单的pojo了

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