Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TotalElements返回的总数据表行的值不正确_Java_Spring_Spring Boot_Jpa_Spring Data Jpa - Fatal编程技术网

Java TotalElements返回的总数据表行的值不正确

Java TotalElements返回的总数据表行的值不正确,java,spring,spring-boot,jpa,spring-data-jpa,Java,Spring,Spring Boot,Jpa,Spring Data Jpa,我想实现一个返回分页请求/响应的查询 @Repository @SuppressWarnings("all") public interface OfferingsRepository extends JpaRepository<Offerings, UUID>, CustomJpaSpecificationExecutor<Offerings> { ....... } @存储库 @抑制警告(“全部”) 公共接口Off

我想实现一个返回分页请求/响应的查询

@Repository
@SuppressWarnings("all")
public interface OfferingsRepository extends JpaRepository<Offerings, UUID>,
        CustomJpaSpecificationExecutor<Offerings> {
        .......
}
@存储库
@抑制警告(“全部”)
公共接口OfferingRepository扩展了JpaRepository,
CustomJpaSpecificationExecutor{
.......
}
向包含23行的表中发出请求:

Page<Offerings> all = offeringsRepository .findAll(
                new Offerings(searchCriteria, relevance),
                PageRequest.of(0, 20));

        long count = all.getTotalElements();
Page all=offeringsRepository.findAll(
新产品(搜索标准、相关性),
第(0,20)页);
long count=all.getTotalElements();

计数应该是23,但我得到20。我不明白为什么我得到了价值20。应该是23。您知道如何解决此问题。

您需要在API中提供一个单独的countQuery。默认情况下,您将获得findAll()方法返回的记录数,该方法返回的记录数为前20

界面的示例代码:

@Query(name = "SELECT offr FROM Offerings offr", countQuery = "SELECT count(offr) FROM Offerings offr")
  Page<Offerings> findAll();
@Query(name=“从产品销售人员中选择销售人员”,countQuery=“从产品销售人员中选择销售人员”)
Page findAll();

您需要在API中提供一个单独的countQuery。默认情况下,您将获得findAll()方法返回的记录数,该方法返回的记录数为前20

界面的示例代码:

@Query(name = "SELECT offr FROM Offerings offr", countQuery = "SELECT count(offr) FROM Offerings offr")
  Page<Offerings> findAll();
@Query(name=“从产品销售人员中选择销售人员”,countQuery=“从产品销售人员中选择销售人员”)
Page findAll();

不幸的是,此代码位于lib下,我无法修改。还有其他解决方案吗?是否可以通过某种方式扩展
findAll()
以包括
countQuery=“SELECT count(offr)FROM provides offr”
,而不添加查询,因为我有一个复杂的规范和内部联接?您可能需要复制这些条件才能获得准确的计数。不幸的是,你不能扩展它。还有一个问题。我可以在上面粘贴的本机查询中使用我的自定义构建规范吗?我从未尝试过。您应该能够使用带有规范的countQuery。这是一个JPQL。不幸的是,这段代码位于lib下,我无法修改它。还有其他解决方案吗?是否可以通过某种方式扩展
findAll()
以包括
countQuery=“SELECT count(offr)FROM provides offr”
,而不添加查询,因为我有一个复杂的规范和内部联接?您可能需要复制这些条件才能获得准确的计数。不幸的是,你不能扩展它。还有一个问题。我可以在上面粘贴的本机查询中使用我的自定义构建规范吗?我从未尝试过。您应该能够使用带有规范的countQuery。这是一个JPQL。