当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA:添加分页后投影被破坏

连俊智
2023-03-14

我有一个使用投影的查询,只要返回类型是list,它就可以正常工作,但添加分页后它就停止工作了。

以下是工作代码:

@Query("SELECT DISTINCT \n" +
        "  new com.mycompany.dto.MyDto(me.property1, me.property2, ...) \n" +
        "FROM MyEntiry me...")
List<MyDto> findEntities();

我需要扩展它添加分页,所以我将其更改为:

@Query("SELECT DISTINCT \n" +
        "  new com.mycompany.dto.MyDto(me.property1, me.property2, ...) \n" +
        "FROM MyEntiry me...")
Page<MyDto> findEntities(Pageable pageable);
SELECT DISTINCT 
  new com.mycompany.dto.MyDto(me.property1, me.property2, ...)  
select count(me) FROM com.mycompany.MyEntiry me ...
  • 我添加的查询过于简化,我的实际查询实际上从不同的表中收集不同的值,如果没有投影,我无法实现它
  • 我使用的是Spring Boot 1.5.8。发布

共有1个答案

殷轶
2023-03-14

尝试使用“本机”Spring Data JPA投影。

这应该能很好地工作:

public interface MyProjection {
    String getProperty1();
    //...
}

Page<MyProjection> getDistinctAllBy(Pageable pageable);

但是,如果您的查询连接了许多表,那么使用分页时就会有一些困难(例如:1,2)

@Query(value = "select ...", countQuery = "select count(me) from MyEntiry me")
Page<MyDto> findEntities(Pageable pageable);
 类似资料:
  • 我ogin.php 指数php 我做了一个登录脚本,打开,如果密码是正确的,我ndex.php网站。当第一次通过登录脚本打开ndex.php网站时,一切正常,会话设置完毕。但是在我刷新页面后,会话会被破坏,并且没有设置。那么我如何保存会话,这样它就不会因为刷新浏览器而被破坏呢?

  • 我有一个2.1.4版本的项目,带有spring boot数据。 该项目具有以下关系实体:ApplicationEntity ApplicationTranslateEntity LanguageEntity它在数据库中有一个区域设置关系表(ManyToMany),该表中有一个用于不同语言的文本的额外表(ApplicationTranslateEntity)。 org.hibernate.Query

  • 我正在尝试使用youtube频道成员资格API(promoters . list)对结果列表进行分页,但是分页和PageTokens似乎无法正常工作。 我目前正在为用户开发一个应用程序,以生成他们频道的所有成员列表(使用apisponsors.list:https://developers.google.com/youtube/v3/live/docs/sponsors/list) 我有一个测试帐

  • MongoDB 中的投影即查询指定的字段,而不是直接查询文档的全部字段。比如说某个文档中有 5 个字段,而我们只需要其中的 3 个字段,那么就可以使用 MongoDB 中的投影来指定需要查询的 3 个字段。 在《 MongoDB查询文档》一节中我们介绍的 find() 方法,在使用 find() 方法时,如果不设置其中的第二个参数,那么在查询时将返回文档中的所有字段,想要限制要查询的字段,您就需要

  • 我正在这样访问我的存储库中的投影。

  • 举个简单的例子来说明正交投影与透视投影照相机的区别。使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有“近大远小”的效果(如下图中的(a));而使用正交投影照相机获得的结果就像我们在数学几何学课上老师教我们画的效果,对于在三维空间内平行的线,投影到二维空间中也一定是平行的(如下图中的(b))。 (a)透视投影,(b)正交投影 那么,你的程序需要正交投影还是透视投影的照相机呢? 一般说来,对