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

Hibernate获取连接仍在触发选择

韦泳
2023-03-14

我有一个Hibernate父对象,其子对象为OneToOne关系:

@OneToOne
@Fetch(FetchMode.JOIN)
@NotFound(action=NotFoundAction.IGNORE)
@JoinColumns({
    @JoinColumn(name="column_a", referencedColumnName="column_a", insertable = false, updatable = false),
    @JoinColumn(name="column_b", referencedColumnName="column_b", insertable = false, updatable = false),
    @JoinColumn(name="column_c", referencedColumnName="column_c", insertable = false, updatable = false)
   })
   public Child getChild()
   {
      return child;
   }

子项信息可能并不总是可用的。我希望始终返回父对象,如果相关信息可用,则初始化子对象。

我尝试使用以下HQL检索父对象列表:

String queryString = "select parent from Parent parent"
                  + " left join fetch parent.child child "
                  + " where parent <.... meets criteria> "
EntityManager em = getEntityManager();
Query query = em.createQuery(queryString);
query.setParameter(<set parameters...>);
query.getResultList();

当我查看此HQL生成的SQL时,它正在为原始SELECT之后的每个子级执行单独的SELECT。

如果在HQL查询中设置FetchMode为JOIN并显式设置left JOIN fetch,有人能告诉我为什么会发生这种情况吗?

共有1个答案

郎德馨
2023-03-14

你的子类也有一些联想吗??请参考下面的链接,这可能会对您有所帮助。

避免子集合元素关联的n1急切获取

 类似资料:
  • 问题内容: 我有以下查询和方法 与作为 我希望这个查询可以获取and >关系,但事实并非如此。假设I查询有两个运算符,Hibernate将执行1 + 2 * 2 = 5个查询 我猜这是因为我加入了operator 元素,但他们必须加入自己的行列。 我可以执行同时执行的HQL查询吗? 问题答案: 如果您知道树中只有两个级别,那么您是否考虑过加入更深的一个级别。像下面的东西?

  • 我在Hibernate重新加载查询中的实体时遇到问题,即使它们是作为主查询的一部分获取的。 实体如下(简化) 这是对父/子关系的闭包表进行建模。 我制定了以下一些标准 这导致以下SQL查询 看起来它正确地实现了连接获取。但是当我执行 我在结果集中的每行SQL日志中看到这些条目之一 看起来即使DataContents被标记为懒加载,它也在急切地加载。 因此,我要么希望在我的查询中以某种方式获取加入数

  • 当我在jpaHibernate期间遇到高并发时,项目运行一段时间后会报告“无法获取JDBC连接”错误。但是在我添加了hikari数据库连接池之后,问题就解决了。为什么会发生这种情况或者没有其他方法可以解决它?

  • 问题内容: 我在调试此问题时非常困难。每当我尝试与postgres建立连接时,都需要花费一分钟的时间。建立连接后,一切正常。我尝试禁用所有映射并且不加载任何映射,但是仍然需要花费很长时间来获取连接。我也尝试过禁用验证,没有区别。当我使用简单的简单JDBC连接时,它是瞬时的。Hibernate所做的事情需要花费大量时间,而我似乎无法缩小范围。任何输入,不胜感激! Postgres驱动程序: 配置设置

  • 以下实体: JPQL查询: Hibernate生成正确的sql查询,但当它尝试收集数据时,它会进行额外的调用,例如: 我检查了查询返回null。如何避免此类数据库查询? 我的调查:据我所知,Hibernate创建key by(AA1.a_number和AA1.category)并尝试从上下文中检索实体。对于特定的行“left join”,查询返回空值,Hibernate按键询问上下文,而上下文返回

  • 我正在编写一个JPQL查询(Hibernate是我的JPA提供程序),以获取一个实体及其几个关联。这适用于我的“简单”的许多关联,比如: Hibernate创建一个查询来获取上述内容,这很好。然而,我的实体也与存储在中间表中的数据有多对多关联,因此这被映射为三个实体之间的和关联。 公司介绍 这是我代码中的三个实体。因此,一个实例有一组实体,每个实体都与一个实例有关系。我希望这是有意义的——否则请检