【发布时间】:2020-03-16 01:25:08
【问题描述】:
我是 Spring Data JPA 的新手,并且有以下内容
Page<Object> page = tableARepository.findAll(
(root, criteriaQuery, criteriaBuilder) -> criteriaQuery
.where(sortConfig.getPredicateList(root, criteriaQuery, criteriaBuilder))
.groupBy(root.get("colB"))
.getRestriction(),
sortConfig.getPageable()
);
一切都是正确的,除了page.getTotalElements() 返回错误的计数,我还发现它返回的计数没有groupBy。
我需要page.getTotalElements() 来显示前端的总行数,目前的解决方法是我重新查询它并获取结果的大小,这不是很漂亮的事情(该网站仍处于开发阶段)。
我还打印出了休眠 sql 查询,并且选择计数查询确实包含 groupBy,但我不确定是什么导致它返回错误值。
假设,tableA的数据如下:
ColA | ColB | ...
1 A
2 B
3 B
4 C
5 D
在groupBy之后
我应该有下面的结果和计数
ColA | ColB | ...
1 A
2 B
4 C
5 D
总数:4
但不知怎的,我得到了 5,有人可以帮忙吗?
注意:SortConfig 由我的同事开发,用于分页。
编辑:
select
count(tblA_.tableA_ID) as col_0_0_
from
tableA tblA_
where
tblA_.tableAColC like ?
group by
tblA_.tableAColB
【问题讨论】:
-
你能用hibernate生成的sql查询更新问题吗
-
还有 5 个计数是什么意思?你可以发布它返回的结果集吗?也许它只是一个数据问题?
-
@AntJavaDev 我做了一个
where ColC like abc将返回 43 行和 43 个计数,之后我添加了一个groupBy colB它将返回 33 行和 43 个计数。 -
@AntJavaDev 是的!这就是我目前面临的。所以这是一个错误,感谢您提供的链接,我将检查这些链接。我正在使用 spring data jpa 2.1.10.RELEASE 和 spring boot 2.1.8.RELEASE。
标签: java spring-data-jpa spring-data