问题标签 [entitygraph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 当我尝试使用 2 个集合加载实体时,MultipleBagFetchException 使用 JPA EntityGraph
我有用户实体:
物品:
角色:
我想为用户加载项目和角色。我用@NamedEntityGraph
. 这是我的存储库:
但我收到一个错误:
java - Spring Data JPA 在使用实体图且映射对象不存在时运行额外的选择查询(null)
我有 2 个实体处于一对一的关系中(可以是多对一,但对于这种情况,我认为这并不重要),如下所示:
所以我覆盖了findAll
他们默认提供的方法,因为我仍然想使用谓词并且我仍然想将查询连接到另一个表。这几乎完美无缺。创建的查询如下所示
现在的问题是,如果用户从该查询中返回基本上为空(用户的所有属性为空,意味着不存在与条件匹配的属性),那么 Spring 会直接向用户表创建额外的选择查询以查找用户。例如,假设有一个 id=4 的帖子。如果没有 id = 4 的用户,那么 Spring 将创建并运行一个正常的查询,如下所示:
如果数据集很大并且包含不适合原始连接查询的大量记录,则会出现问题,那么将创建和执行太多额外的查询。如果它不符合连接条件,那么我希望忽略该实体记录。使用该示例,我希望忽略任何 id 与 post id 不匹配的用户,而不是另一个 select 语句。
有没有办法防止创建这些额外的选择查询?
java - Spring JPA Entity Graph 和 Self Reference 发生 N+1 查询
我尝试使用实体图来避免 N+1 查询,它按预期工作。
自引用实体不同,虽然这些代码可以得到正确的列表,但发生了 N+1 查询。
我的问题是如何使用自引用实体消除 N+1 查询?
提前致谢。
日志和代码如下
实体
存储库
架构
spring - 为什么休眠实体图获取嵌套的惰性集合
我正在尝试使用实体图来触发延迟集合加载,但不幸的是实体图也会触发所有嵌套集合。我正在使用 spring-data-jpa-entity-graph 库在运行时创建实体图。
带有 JPA 存储库的 Spring 服务:
在这种情况下,服务还返回每辆车的零件收集,但我只想获取每个品牌的车辆收集的品牌列表。
我们如何触发仅在第一级加载惰性集合(仅品牌车辆 - 没有车辆零件)?
hibernate - @EntityGraph 获取实体内部的实体
我正在尝试使用 EntityGraph 获取所有产品翻译。它工作正常,但它也获取所有延迟获取的实体。我的产品实体:
ProductTranslate新实体:
我的仓库:
当我调用 getAllProductBySupplierId 方法时,我会在 Translate 中获取 Product。它也获取产品。
有没有办法不获取 Entity - 用 FetchType.Lazy 注释?
java - entitygraph 不工作 - 返回所有实体
我正在 springdata jpa 的简单场景中尝试 EntityGraph:
这个想法只是获取一个带有 id 字段的实体并省略另一个名为 name 的字段。
这是要检索的实体:
存储库:
和服务:
如前所述,检索整个区域。
我通过使用更多代码尝试了另一种方法。
添加了一个界面:
并用它来添加一个 impl 类:
并尝试了这个变体:
还将 H2 与 application.properties 设置一起使用:
这是 ide 控制台中使用的 SQL 模板:
一切都没有奏效...
我错过了什么?
java - 避免“HHH000104:使用集合提取指定的 firstResult/maxResults;在内存中应用!” 使用弹簧数据
我正在使用 Spring Data 并遇到问题HHH000104: firstResult/maxResults specified with collection fetch; applying in memory!
警告消息。
导致该问题的实体关系非常简单,我使用@NamedEntityGraph
它来获取所有数据:
我的存储库看起来像:
使用 sayfindAll(PageRequest.of(1, 1))
给我警告信息:
ohhinternal.ast.QueryTranslatorImpl : HHH000104: firstResult/maxResults 用集合获取指定;在内存中应用!
这对我来说很清楚,我明白为什么会这样。
我从@Vlad Mihalcea 那里看到了如何在使用 Hibernate 时修复它的很好的解释: https ://stackoverflow.com/a/46195656/5108737
但是有没有办法不使用 Hibernate 而仅使用 Spring Data 来修复它?
jpa - @Any 字段和 @NamedEntityGraph
尝试创建实体图时出现以下错误:
java.lang.IllegalArgumentException:无法在此 ManagedType [com.example.RelatedObject] 上找到具有给定名称 [myRelatedObject] 的属性
这是实体:
似乎实体图的 @Any 注释有问题,但我找不到关于这两者如何相互作用的一条信息。
有谁知道发生了什么?有没有办法通过@Any 使用实体图?
谢谢
spring-boot - 我们可以使 Spring JPA 规范与 EntityGraph 一起使用吗?
我正在使用实体上的 JPA 规范实现动态查询逻辑。该实体与其他实体有多个关系。我在执行 JPA 规范时遇到了生成太多查询的问题。
有没有办法将 JPA 规范findAll(specification, page)
与 EntityGraph 结合起来,以便我们可以在执行相同的查询时生成一个查询?
spring-boot - 为什么 @EntityGraph 从 Spring 2.2.5 版开始不加载 EAGER?
在 Spring Boot 2.2.5 之前 @EntityGraph 用于加载 EAGER,但在 2.2.5 之后我需要将 EAGER 添加到 attributePaths,例如 attributePaths = {"image", "roles"}
@EntityGraph 如何工作或者我做错了什么。当我更改为较新的版本 2.2.4 -> 2.2.5 时出现了问题