可以在一个 JPQL 查询中传递多个命名实体图?

Posted

技术标签:

【中文标题】可以在一个 JPQL 查询中传递多个命名实体图?【英文标题】:Multiple named entity graphs can be passed in one JPQL query? 【发布时间】:2015-07-20 01:05:09 【问题描述】:

我即将使用 JPA 2.1 的新功能。其中之一是命名实体图。

如果我的实体有两个图表,我可以在查询中使用它们吗?

EntityGraph graph1 = this.em.getEntityGraph("graph.Order.items");
EntityGraph graph2 = this.em.getEntityGraph("graph.Order.address");

例如,如下所示

Map hints = new HashMap();
hints.put("javax.persistence.fetchgraph", graph1);
hints.put("javax.persistence.fetchgraph", graph2);

Order order = this.em.find(Order.class, orderId, hints);

entityManager.setHint("javax.persistence.fetchgraph", graph1);
entityManager.setHint("javax.persistence.fetchgraph", graph2);

原因是我的其他查询可能只需要已定义图表中的一个。

【问题讨论】:

不在一个查询中。您可以拥有一个带有子实体图的实体图。 【参考方案1】:

我已经测试过了。

如果分配了多个图表,将应用最后一个。

【讨论】:

你知道是否有办法链接图表吗?我问的是我的问题***.com/questions/38505745/… 这是因为在 map 中键应该是唯一的。并且您尝试为单个键输入两个值。这是不可能的。这是核心 java 问题而不是 EntityGraph 问题

以上是关于可以在一个 JPQL 查询中传递多个命名实体图?的主要内容,如果未能解决你的问题,请参考以下文章

是否有 JPA / JPQL 查询来搜索春季作为 JSON 传递的实体子集?

JPQL:多重连接。如何做我的命名查询?

springDataJPQL实现增删改查及分页,原生sql查询,根据方法命名规则实现查询

在 JPQL Native Query 中将查询作为查询参数传递

如何在一个 JPQL 查询中使用多个 JOIN FETCH

如何使用 JPQL 创建动态更新查询?