JPA 的 n+1 问题是否与@OneToMany 或@ManyToOne 或两者相关?

Is JPA's n+1 problem related to @OneToMany or to @ManyToOne or both?

当然有很多关于 n+1 JPA 问题的文章和这里的问答,其中一些从 @OneToMany 的角度讨论问题,其他的 @ManyToOne 是与两者相关的问题?

@OneToMany:当查询实体时,其中有一个字段集合被注解@OneToMany

@ManyToOne:当查询实体中有一个字段被注解时@ManyToOne

对于两者甚至 @OneToOne 延迟加载时。

如果您加载实体列表,其中实体与一个或多个实体有关系,则会出现此问题。

所以第一个查询是获取列表,然后对于列表中的每个实体,JPA 将使用附加查询加载关系。