gpt4 book ai didi

java - Eclipselink 分组依据不起作用

转载 作者:行者123 更新时间:2023-11-29 05:49:28 24 4
gpt4 key购买 nike

如何在下面的代码中添加groupBy 条件?因为如果我添加 criteriaQuery.groupBy(from.get(minutis.Preke_.prId)); - 我得到完全相同的 SQL 语句(没有 groupBy):

CriteriaBuilder cb = MinutisManager.getInstance().getCriteriaBuilder();
CriteriaQuery criteriaQuery = cb.createQuery(minutis.Preke.class);
Root<minutis.Preke> from = criteriaQuery.from(minutis.Preke.class);
from.fetch(minutis.Preke_.tiekejai, JoinType.LEFT).fetch(minutis.PrekeTiekejas_.tiekejas, JoinType.LEFT);
//criteriaQuery.groupBy(from.get(minutis.Preke_.prId));

TypedQuery<minutis.Preke> typedQuery = MinutisManager.getInstance().createQuery(criteriaQuery);
typedQuery.setFirstResult(0);
typedQuery.setMaxResults(100);
typedQuery.getResultList();

编辑 1:

criteriaQuery.distinct(true) 不适合我。因为该命令挂起整个语句,如果我使用 EXPLAIN: When distinct is uesd

如果我在查询中使用 GROUP BY,则 EXPLAIN 是: enter image description here

编辑 2:

我在有和没有 criteriaQuery.groupBy(from.get(minutis.Preke_.prId));

的情况下都得到了这条 SQL 语句
SELECT ... FROM preke t1 LEFT OUTER JOIN preke_tiekejas t0 ON (t0.pr_id = t1.pr_id) LEFT OUTER JOIN tiekejas t2 ON (t2.tiek_id = t0.tiek_id) LEFT OUTER JOIN gamintojas t3 ON (t3.gam_id = t1.gam_id) LEFT OUTER JOIN google_compare t4 ON (t4.pr_id = t1.pr_id) LEFT OUTER JOIN grupe t5 ON (t5.pgs_id = t1.pgs_id) LEFT OUTER JOIN preke_kaina t6 ON (t6.pr_id = t1.pr_id) ORDER BY t1.pr_id LIMIT ?, ?

最佳答案

GROUP BY 查询的 SQL 肯定应该包含 GROUP BY。确保您正在正确编译和部署代码。

忽略分组可能是一个错误,因为正常的分组查询不会选择对象,而是聚合值。检查您使用的是否是最新版本,也许记录错误,或尝试 JPQL。

通常您的查询没有任何意义,通常在按查询分组时,您只能选择分组依据的字段或聚合函数。

或许考虑批量抓取而不是联合抓取。

http://java-persistence-performance.blogspot.com/2010/08/batch-fetching-optimizing-object-graph.html

关于java - Eclipselink 分组依据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com