问题标签 [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.

0 投票
0 回答
362 浏览

jpa - JPA实体图:除一个之外的所有属性

我有一个大约 30 个字段的产品实体。我喜欢使用 EntityGraph 来获取产品列表,但它的描述是 CLOB。

我必须向 EntityGraph 添加 29 个其他属性。有没有办法说:除了属性A之外的所有属性?

谢谢。

0 投票
0 回答
367 浏览

jpa - EclipseLink JPA:无法在报告查询中设置获取组

EclipseLink:无法在报表查询上设置提取组。

什么是报表查询?

https://docs.oracle.com/cd/B25221_04/web.1013/b13593/e​​rrcode006.htm

谢谢。

0 投票
2 回答
2433 浏览

java - 如何在@NamedEntityGraph 的子图中仅加载指定的属性

我想从数据库加载一个 UserReference 对象,但从验证器属性我只想加载 id、firstName 和 lastName,这样 userReference 看起来像这样:

我为 UserReference 类使用了一个实体图,但我使用的实体图加载了用户拥有的所有信息,包括电子邮件、用户名、办公室和部门。有没有办法为子图指定像 EntityGraphType.FETCH 这样的东西,以便它只加载验证者的 id、firstName 和 lastName?

这是我的 UserReferenceRepository:

用户参考类:

和用户:

0 投票
1 回答
3948 浏览

java - Spring Data JPA 实体图不适用于 Spring Boot

当应用基于 Spring Boot 时,不考虑定义的实体图。相反,在 JUnit 测试期间一切正常。

领域非常简单:书籍及其类别(多对多关系)。
书类:

分类类:

具有使用创建的实体图的方法的 JPA 存储库:

在 REST 控制器中的用法:

在启动 Spring Boot (mvn spring-boot:run) 并导航到http://localhost:8080/books后,会显示书籍,但会显示它们各自的类别(并且由于无限递归而引发异常:书籍 -> 类别 -> 书籍-> 类别 -> ...)。

测试中的相同代码(使用 SpringJUnit4ClassRunner 运行)按预期工作,并且可以正确识别实体图。例如,下面的代码没有显示类别,因为正如预期的那样存在延迟初始化:

当应用程序在 Spring Boot 上运行时如何让实体图工作有什么建议吗?

0 投票
0 回答
1261 浏览

spring-data-jpa - .ClassCastException: org.hibernate.internal.SQLQueryImpl 不能转换为 org.hibernate.internal.QueryImpl

我正在尝试使用 EntityGraph 获取一些惰性集合

在我的实体上

存储库

使用本机查询时,我遇到了下一个异常

java.lang.ClassCastException: org.hibernate.internal.SQLQueryImpl 不能在 org.hibernate.jpa 的 org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:604) 中转换为 org.hibernate.internal.QueryImpl。 internal.QueryImpl.getSingleResult(QueryImpl.java:529) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:372) 在 com.sun.proxy.$ org.springframework.data.jpa.repository.query 中的 Proxy276.getSingleResult(Unknown Source)。JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:206) 在 org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78) 在 org.springframework.data.jpa.repository.query.AbstractJpaQuery。 doExecute(AbstractJpaQuery.java:102) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:92) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke( RepositoryFactorySupport.java:482) 在 org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)在 org.springframework。data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at ...... .....................在 org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)

使用 JPQL 查询时一切正常。但是我有很大的本地查询,转换为 JPQL 非常痛苦。有谁知道这种情况下的解决方法?将不胜感激任何帮助。

0 投票
1 回答
193 浏览

hibernate - jpa/hibernate 在自动 relashionship 中急切地加载整个链

我正在使用 JPA 实体图来急切地加载关系。

但是,我的问题是:

该关系是这样的自关系:

因此,当我从数据库中获取对象 X 时,孩子们也会加载。这是正确的。但是,当我得到 children Set 的第一个对象并得到他们的孩子时,hibernate 会在数据库中执行另一个查询。

我的实体类带有以下注释:

我的搜索是这样的:

任何想法?

0 投票
1 回答
589 浏览

hibernate - 在 OneToMany 关系的情况下使用 EntityGraph 重复结果

我决定在我最近开始的项目中使用 JPA 2.1 的实体图功能,但我遇到了一个问题。

当您在 ManyToOne 关系上扩展图表时效果很好,但对于 OneToMany,结果会重复,因为我的提供程序(Hibernate)使用左外连接。

我看到了一些解决方案,他们提出了 Distinct 关键字来解决这个问题,但我认为这是一个棘手的解决方案,即使我们如何获得下一级实体 Distinct。

我的意思是,如果我有 3 个实体 A、B 和 C,我将在 A 而不是 B 上使用 Distinct,其中 B 与 C 具有 OneToMany 关系,那么我们会在 A 中获得 B 的重复记录,依此类推

0 投票
1 回答
1609 浏览

hibernate - 使用多个选择但没有 FetchType.EAGER 注释的渴望获取

List我想在某些用例中急切地获取一对多的-s(但并非总是如此,所以@OneToMany(fetch=FetchType.EAGER)不会很好),并且我还希望 JPA 使用单独的 SQL 选择来获取那些List-s (每个选择一个List,而不是每个List项目一个),而不是 SQL 连接。那是因为笛卡尔积(我有两个独立的列表)。

您可能会认为我可以使用 JPA 2.1 实体图(毕竟这就是它的用途,以特别的方式将属性标记为渴望)或者left join fetch使用 JPQL(或使用标准 API)不太优雅。但是这些似乎坚持使用 SQL 连接(在 的情况下并不奇怪left join fetch),即使它们最终以 a 结尾MultipleBagFetchException,它们也不会退回到List在单独的 SQL 选择中获取一些 -s 。实际上我的案例也是一个多袋案例,但是在您将我重定向到使用Set-s 等解决它之前,请注意前提是我不想要加入(太大的笛卡尔积)。现在,逗我一下,如果我用 注释List属性@OneToMany(fetch=FetchType.EAGER),Hibernate 将足够聪明地获取List-s 在单独的选择中避免多个包(另外我什至可以使用 Hibernate 的Fetch注释强制执行此行为)。因此,JPA 2.1 实体图似乎无法兑现 ad-hoc 的承诺FetchType.EAGER,因为它们的行为很像 ad-hoc fetch 连接,我们之前也已经有了。还是我错过了什么?

我突然想到,我应该parentEntity.getSomeList().size()在初始查询之后调用,这次不会尝试急切获取列表,但问题是,我还需要急切获取列表项本身的一些属性,我无法指定上述调用的实体图。我也可以自己创建一个 JPA 查询,它只能通过所述急切获取获得“someList”(这些都没有问题),但是我怎样才能将结果列表放回parentEntity?如果我调用parentEntity.setSomeList(fetchedList),parentEntity就会变脏(尽管它不在关联的所有者端),所以它将是 SQL update-d (只是为了破坏最后修改时间和乐观锁定版本)。

0 投票
2 回答
1589 浏览

java - 如何限制 Hibernate 实体图中使用的列

Hibernate 5.0.10 我定义了一个子图,如下所示:

@NamedSubgraph(name = "proc", attributeNodes = { @NamedAttributeNode("name"), @NamedAttributeNode("childTable1"), @NamedAttributeNode("childTable2"), @NamedAttributeNode("childTable3"), @NamedAttributeNode("childTable4") }),

问题是,当使用这个子图时,我得到了根表(存在名称)中定义的所有属性,而不仅仅是我指定的子图属性。有没有办法告诉hibernate不要去取那些孩子?我的查询看起来就像select rec from records rec join rec.proc

0 投票
0 回答
1103 浏览

spring-data-jpa - 带有实体图的 Spring 数据分页

我需要将分页与使用实体图的自定义查询结合使用。我的存储库如下所示:

为了比较,我使用此方法和使用findAll继承自的方法获取维护QueryDslPredicateExecutor

在数据库中有 3 个维护寄存器,当我使用页面大小为 1、2 和 50 的页面调用此方法时,我得到此日志。

根据日志,分页工作正常,但是当我使用我的存储库方法和继承findAll方法时查询非常不同。

两个日志已被剪切以显示相关信息,在第二个查询中,实体图提示尚未使用,因为我无法为其提供 Predicate 对象,但我理解这不是我的问题。

有了这个结果,我知道使用我的存储库方法(第一个查询)我没有得到真正的分页,因为 spring 正在用正确的内容大小填充列表,并且查询没有limit关键字。

对于第二个查询,我得到了一个真正的分页,因为数据库正在做这项工作。

根据 Spring Data参考,我应该能够使用自定义查询方法进行分页。

我关心的是性能,因为我不想在内存中加载太多数据,我需要在数据库级别完成真正的分页。

使用QueryDslPredicateExecutor很好,但我无法为实体图设置提示。