问题标签 [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.
java - JPA 继承 @EntityGraph 包括可选的子类关联
给定以下域模型,我想加载所有Answer
s,包括它们Value
的 s 和它们各自的子子项,并将其放入 anAnswerDTO
中,然后转换为 JSON。我有一个可行的解决方案,但它遇到了我想通过使用 ad-hoc 摆脱的 N+1 问题@EntityGraph
。所有关联均已配置LAZY
。
@EntityGraph
在方法上使用 ad-hocRepository
我可以确保预先获取值以防止 N+1 出现Answer->Value
关联。虽然我的结果很好,但由于延迟加载 s 的selected
关联,还有另一个 N+1 问题MCValue
。
使用这个
失败,因为该selected
字段当然只是某些Value
实体的一部分:
我如何告诉 JPA 仅selected
在值为 a 的情况下尝试获取关联MCValue
?我需要类似的东西optionalAttributePaths
。
spring-data-jpa - Spring Data JPA + JpaSpecificationExecutor + NamedEntityGraph
我有两个实体。父母和孩子。
ChildRepository.java
我正在尝试按标准查找子实体,它应该始终有父实体。
我收到异常,它试图在地址表中找到 parentObj。
我找到了这个链接并尝试了Joep给出的解决方案,但同样的错误。
Spring Data JPA + JpaSpecificationExecutor + EntityGraph
我错过了什么。我无法理解为什么/如何限制在子对象中查找 parentObj,因为地址没有对父对象的引用。
我正在通过 Address.street 进行搜索。
我也尝试过临时实体图。例外:
java - 具有不同 EntityGraph 的 Spring Data JPA findAll
在 Spring Data JPA Repository 中,我需要指定多个执行相同操作的方法(例如 findAll),但指定不同的 @EntityGraph 注释(目标是优化方法以在不同服务中使用)。
埃斯。
在Java中我们不能多次签名相同的方法,那么如何管理呢?
不使用JPQL可以吗?
谢谢,
加布里埃尔
hibernate - 休眠与实体图导致 OneToMany 上的无限循环
我有 2 个实体:
当我获取数据库时这很好用,但是由于延迟加载,当我想在将数百个 Foo 映射到 DTO 后将它们发送到 UI 时,它会很慢。
我试图用 EntityGraph 解决这个问题,但是当我像这样将 Bar 列表放入 EntityGraph 时:
并尝试使用 EntityGraph 获取,我得到一个无限循环。我尝试了很多东西,但似乎没有任何效果。
知道我错过了什么吗?
谢谢!
hibernate - HibernateCursorItemReader 和 EntityGraph
由于结果集的大小,我需要在作业中使用 HibernateCursorItemReader,但我无法使其与 EntityGraph 一起工作以急切地获取一些关系。我正在使用 QueryProvider。
没有任何 EntityGraph 就不会发生连接,并且读取器可以正常工作,但是在批处理期间,Hibernate 会执行大量 SQL 查询以延迟获取数据。这导致处理非常缓慢。
使用查询提示来获取它,任务在此时冻结Loader.class
:
ResultSet rs = session.getJdbcCoordinator().getResultSetReturn().extract( st );
上面的代码在doOpen
HibernateCursorItemReader 的方法中调用,在第一个项目之前。没有错误,没有堆栈跟踪,几分钟内什么也没有,直到我停止 JVM。
我现在正在使用 HibernatePagingItemReader,使用相同的 QueryProvider 并提示急切地获取数据。但是在使用集合获取实体时分页效率不高,JVM 经常会出现内存不足的情况。
抱歉缺少示例代码,但我所拥有的是提到的类的默认配置和实现,没有什么具体可展示的。我认为光标阅读器是解决方案,但它如何与 EntityGraph 一起使用?
编辑 1
EntityGraph 和 HibernateCursorItemReader 一起使用似乎没有问题。耐心等待更多时间,处理开始了。它只是比平常慢,但是休眠的光标阅读器的工作方式与分页阅读器相同,获取所有实体图。
java - 如何在 JpaRepository 中定义自定义 findAll 方法?
我有两个 api 端点:
/api/posts
- 获取分页帖子列表/api/countries/{country}/posts
- 按国家/地区获取分页帖子列表
所以我有以下实体:
我已经定义了以下存储库。请注意,我是如何为最后两个方法定义实体图的,我需要这样,因为我不想覆盖findAll()
方法,因为将来我需要加载没有任何关系的帖子。还有一件事我希望它成为谓词,以便在各种不同的服务中我可以重用方法,而不是为每个查询创建方法......
问题是当我findAllPostResources
使用谓词和可分页参数调用时:
它忽略谓词参数并执行以下查询:
如您所见,SQL ( WHERE country_id = ?
) 中没有 WHERE 原因。
那么,如何创建 findAll() 方法并定义谓词、分页以及在 JpaRepository 中使用什么实体图?或者这是无法通过这种方式实现的,我需要创建自定义存储库实现?
java - Spring data JPA - 使用@EntityGraph导致“指定的实体图不适用于实体”警告
我将我的应用程序从 spring boot 2.2.5 升级到 2.3.3,并且我正在使用带有 5.4.20.Final 的 spring data JPA starter。我的实体在编译时得到了增强。
现在,当我使用@EntityGraph
带有属性的注释而attributePaths
不是覆盖findAll
方法时,JpaRepository
我收到了这个警告:
即使此警告 - 图表已正确获取 - 我只能在日志中看到一个 SQL 查询,并且应用程序的行为与更新前一样。
这是我的存储库代码:
这是我的实体:
如何解决这个警告?我可以看到这个警告发生在休眠TwoPhaseLoad
类的这些行中:
hibernate - EntityGraph 不获取动态提供的关系
我正在尝试使用 spring JPA 存储库和实体图加载实体的惰性属性,EntityGraph 不获取动态提供的关系,而是根据实体中为该属性定义的静态获取类型获取属性。
使用休眠 - 5.2.17.Final , Spring - 4.3.20.RELEASE , Spring data JPA - 1.11.22.RELEASE
spring - Spring Data JPA + 字节码增强
是否可以使用在父实体类中使用 @LazyToOne 、 @LazyGroup 设置为惰性并启用字节码增强的 JPA 接口(实体图)急切地加载 @*ToOne 属性?我正在尝试使用实体图急切地加载此类属性,但是当查询父实体时,它正在为此类 @*ToOne 属性触发另一个查询。
尝试使用另一种方法来覆盖实体类中的静态获取类型,包括添加了字节码增强功能的 @LazyToOne。
使用 Spring 5.1.3、Spring JPA 2.2、Hibernate 5.4.19
更新:数据 JPA 正在按预期工作,我可以看到我试图急切地获取的属性的连接,但是这些惰性属性没有被连接查询响应初始化,并且休眠导致每个查询都引用了 @LazyToOneOption 注释的属性.NO_PROXY 并且已经在我的存储库中使用实体图急切地获取。
我如何避免第二次选择,因为我急切地从 JPA 存储库中的实体图中获取了该数据?
任何帮助将不胜感激。
java - 无法将 @NamedEntityGraph 与 @ElementCollecion 一起使用
我正在尝试在其上设置带有 NamedEntityGraph 的简单实体。不幸的是,它不起作用。你能知道如何解决它吗?
ServiceType 实体具有@ElementCollection
的只是与实体关联的Set
ID 。运行时我得到:String
PictureModel
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [backgroundPicIds] on this ManagedType [pl.mihome.djcost.model.ServiceType]