问题标签 [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 回答
805 浏览

spring - Spring JpaRepository 使用 EntityGraph 返回 null 而不是 Optional

调用此方法:

使用不存在的用户登录返回 null 而不是Optional.of(null). 我想弄清楚我应该添加什么以获得可选的结果?

更完整的代码:

存储库

用户实体

这是相关的用户实体代码

0 投票
0 回答
758 浏览

java - 使用构建器模式的 JPA 实体图

我有一个这样的汽车表:

还有一个看起来像这样的 Car 实体:

我有一个这样的存储库层:

我的存储库实现如下所示:

我这样称呼回购:

但是当我运行它时,我收到以下错误:

我究竟做错了什么?

编辑 1:我尝试将查询更改为:

现在我得到:

编辑2:所以我通过这样做解决了上述问题:

但不幸的是,我认为构建器实际上并没有工作,因为当我withDescription()从查询中删除时,我仍然得到一个填充了描述字段的实体。

如何让它只检索我指定的属性?

0 投票
1 回答
1057 浏览

hibernate - JPA EntityGraph,使用静态 MetaModel 以可编程方式创建 PluralAttribute 的子图

当我有以下实体时。

并使用 EntityGraph 和静态元模型创建一些视图规范类,如下所示。

但是上面的类不能编译,因为预期的类型不是

当我们有扩展属性时会出现此问题javax.persistence.metamodel.PluralAttribute。(例如 SetAttribute、ListAttribute)

这种行为显然来自 api 规范。 javax.persistence.EntityGraph#addSubgraph(javax.persistence.metamodel.Attribute<T,X>)

但是在这种情况下,如何使用 JPA 静态 MetaModel 以可编程和类型安全的方式创建 EntityGraph 呢?

解决方法

0 投票
0 回答
976 浏览

jpa - EntityGraph - 您必须在描述符中定义一个提取组管理器才能在查询上设置一个提取组

我想在 EclipseLink 和 GlassFish 中使用实体图。

如果我使用javax.persistence.loadgraph图表一切正常,但如果我使用javax.persistence.fetchgraph我有一个例外:

org.eclipse.persistence.exceptions.QueryException 异常描述:您必须在描述符(发票)处定义一个提取组管理器,以便在查询(invoice.all)上设置一个提取组

在 EclipseLink 网页中写:

... 使用编织技术..

Weaving 和 Java EE 应用服务器

默认的 EclipseLink 编织行为适用于任何使用 EclipseLink JPA 持久性提供程序的 Java EE JPA 兼容应用程序服务器。要更改此行为,请修改您的 persistence.xml 文件(对于您的 JPA 实体或 POJO 类)以使用 EclipseLink JPA 属性、EclipseLink JPA 注释或两者。

我不明白有什么问题。:(

0 投票
2 回答
2523 浏览

jpa - JPA 实体图:哪些连接类型?

JPA实体图:例如

订单 - OrderItem - 产品

为什么没有 joinType order -> orderItems and orderItem -> product?实体图中的所有连接都应该是左连接?

0 投票
1 回答
1075 浏览

java - Spring Data:使用 QueryDSL 谓词查询 DTO

我正在使用 QueryDSL 来查询/过滤实体(文档):

然后我构建 QueryDSL 谓词并使用方法 findAll 过滤结果:

除了我需要避免 N+1 选择(JPA)之外,它运行良好。有什么方法可以查询 DTO 而不是实体(但仍使用 QueryDSL 谓词),还是可以在这里应用 EntityGraphs(对我不起作用)?

0 投票
3 回答
792 浏览

spring - Spring JPA EntityGraph 获取所有延迟加载的属性

我使用过 Spring 和 Hibernate。现在看看 Spring Data JPA (2.0.3) 和 JPA 2.2

AgencyTicketType

代理票务类别

存储库

服务

在 Service 上进行调试时,查询似乎急切地获取所有延迟加载的属性 - 代理、代理TicketCategories - 及其所有内部延迟加载的属性,这会导致JSON 序列化错误

只需要获取这些

我可以这样做@EntityGraph吗?我错过了什么?

0 投票
0 回答
428 浏览

spring - 即使我不想加载弹簧存储库EntityGraph JoinFormula Lazy

我有 3 个实体,Mouvement 链接 Agent 和 Poste。我不能直接加入邮政和代理,因为这取决于移动的日期。

我的问题是,当我调用 findAllWithPoste() 时,我用他们的 poste 检索代理列表,但我也将代理放在我不想加载的 poste 中以节省时间。有谁知道如何加载 poste 而无需在 poste 中加载代理?

PS:我已经尝试将我的 JoinFormula 转换为存储库方法,但没有成功。

0 投票
0 回答
1096 浏览

spring - 使用带有 DTO 投影的实体图,使用 ResultTransformer 返回空值

您好,我是 jpa + 标准 API + hibernate 的新手..

我对在 jpa 标准 API 中使用 ResultTransformer 有疑问。

我有两个实体部门和员工。部门和员工之间的一对多映射。我想将实体图与 DTO 投影一起使用

1.部门

2. 员工

部门DTO.java

当我得到列表的大小时,它会给我正确的结果,但它会给出具有空值的部门列表,例如

(在数据库中我总共有 3 个部门)

输出 :

我得到所有具有空值的字段。

那么这里的问题是什么,使用ResultTransformer有什么错误吗?或者有什么更好的方法来执行这个查询,我可以使用 DTO 获取记录 ..?

0 投票
1 回答
483 浏览

hibernate - @Basic 字段上的 Hibernate EntityGraph 无法按预期工作

似乎 Hibernate 忽略了 javax.persistence.fetchgraph 中指定的任何 @Basic 字段并始终加载整个对象,直到我们将该字段明确定义为 @Basic(fecth=LAZY)。但是 JPA 2.1 标准说:

要指定获取图,请在执行 EntityManager.find 或查询操作时设置 javax.persistence.fetchgraph 属性。获取图仅包含在 EntityGraph 实例中明确指定的字段,并忽略默认的实体图设置

问题是我不想将所有字段默认设置为延迟加载,因为在某些特定情况下我只需要部分对象来获取 UI 的大量数据。当我可以动态指定要加载的内容时,是否有任何解决方法?

EclipseLink 按预期使用 fetchgraph。

PS Hibernate 5.3.1.Final,使用 hibernate-gradle-plugin:5.3.1.Final 进行的字节码增强: