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

为什么Hibernate在FetchType中查找子实体时会加载父实体。渴望映射

百里弘致
2023-03-14

使用:Hibernate 4

在父子关系中,有一个FetchType。迫不及待地映射,我注意到Hibernate随时都会加载父实体,EntityManager。查找是对一个孩子执行的。这似乎有点浪费。父对象的“幕后”加载会在持久性上下文中产生一个额外的SELECT和额外的对象。此外,它还强制应用程序在删除子应用程序时处理父子关联。

为什么冬眠会这样?这是JPA规范规定的吗?

共有1个答案

轩辕翰
2023-03-14

它来自于在加载实体时必须获取具有急切获取策略的持久属性的规范:

如果所有带有FetchType的属性都被视为已加载实体。EAGER-无论是显式指定还是默认指定-(包括关系和其他集合值属性)已从数据库加载或由应用程序分配。带有FetchType的属性。LAZY可能已加载,也可能未加载。

 类似资料:
  • 我不明白,当我使用JPQL与JOIN获取Hibernate应该做一个查询来加入子实体,但是当我想使用本机查询并用一个查询加入所有子实体时,Hibernate仍然懒惰地加载其他查询中的子实体。我正在使用Spring Data 2。 我应该做什么来避免懒惰加载或使用本机查询的n 1查询? 例子: 实体:

  • 我使用Hibernate已经有一段时间了,而且非常成功。然而,我昨天遇到了一个问题,这里的答案将在将来节省大量调试时间。 我忘了在我的hibernate中添加hibernate映射。新实体的cfg。 当我试图加载这个实体时,我本以为会得到某种运行时异常,但它却什么也没加载,继续运行,好像一切都很好。 我正在使用以下代码加载实体。 我想一个错误,如果我尝试加载一个实体,没有映射在我的hibernat

  • 我有以下情况: 我想把所有动物都放在动物桌上。但是当我加载它们时,我想说它们是在哪个子类中加载的。在这种情况下,动物在理论上是抽象的。 这样的事情可能吗: 问题是,否则我看不出有任何可能从装载的动物投射到猫。:( 我用的是Hibernate4.2

  • 在web应用程序上,我们使用Spring 3.2和Hibernate 4.1.1,并实现了一个类似插件的架构。插件可以在运行时添加和删除。对于每个模块,我们定义了一个单独的类加载器,并在spring上创建了单独的子应用程序上下文。完整的配置是使用注释完成的,不再需要对beans进行XML配置。 Spring Hibernate配置类 现在的问题是:一些插件包含自己的实体(DAO)类,这些类在运行时

  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 尝试获取父实体(Msg)的实体,其中父PK (msg_id)是子实体中的FK时,尝试保持子实体(MsgRetry)时出错。 错误,如:org.hibernate.id.IdentifierGenerationException:试图从null一对一属性分配id 父实体,不需要知道子实体(至少我认为它不需要知道)。一旦子实体被持久化,我就会尝试也持久化父实体。我可以通过在子实体中没有父实体并调用关联