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

如何将分页添加到JPA中的列表自定义查询?

刘翔宇
2023-03-14

我的存储库如下所示:

public interface HeroRepository extends JpaRepository<Hero,Long>{
     @Query(value = "SELECT h.heroname , SUM(h.killCount) AS killcount FROM Heroes AS h GROUP BY h.heroname ORDER BY h.heroname",nativeQuery = true)     
     List<IHero> findAllHeroByGroupName();
}

如何将分页添加到不使用JPA默认“findAll”查询的自定义查询?

如何让Spring将其转换为页面或可分页对象?

findAllHeroByGroupName()

因此,在我的AppController中,我可以这样使用它:

Page=heroService。findAllHeroByGroupName(pageNum);

请注意,findAllHeroByGroupName()返回一个列表,而不是页面对象。

共有1个答案

林泰平
2023-03-14

你需要使用Pageable

存储库类中的方法如下所示:

public interface HeroRepository extends JpaRepository<Hero,Long>{
     @Query(value = "SELECT h.heroname , SUM(h.killCount) AS killcount FROM Heroes AS h GROUP BY h.heroname ORDER BY h.heroname",nativeQuery = true)     
     List<IHero> findAllHeroByGroupName(Pageable pageable);
}

现在,要使用分页获取记录,可以使用以下方法:

Pageable firstPageWithTwoElements = PageRequest.of(0, 2);

第一个参数是pagenumber,第二个参数是size。你可以阅读更多关于PageRequest的信息

List<IHero> allProducts = heroRepository.findAllHeroByGroupName(firstPageWithTwoElements);

默认情况下,findAll(Pageable-Pageable)方法返回一个页面

但是,我们可以选择返回页面

在此处阅读有关如何使用Native查询的更多信息

 类似资料:
  • 问题内容: 我有一个带有输入字段和通过添加属性等进行验证设置的表单。但是对于某些领域,我需要做一些额外的验证。我将如何“利用” 控制的验证? 自定义验证可能类似于“如果填写了这3个字段,则此字段是必需的,并且需要以特定方式进行格式化”。 有一个方法,但是看起来不像公共API,所以我宁愿不使用它。创建自定义指令并使用它看起来像另一个选项,但是基本上需要我为每个自定义验证规则创建一个指令,而这是我所不

  • 我已经搜索了又搜索,除了我称之为“hack方法”的方法之外,找不到其他方法将自定义分类添加到自定义管理菜单中。 然后我注册我的帖子类型并确保它们使用 这可以工作,自定义帖子类型显示在我的自定义菜单中。 但是自定义分类法不接受同一属性的字符串,只接受true或false。 因此,要添加它,您必须创建一个子菜单页 这是一种“黑客”方式。 还有别的办法吗?如果不修改WordPress核心,我可以覆盖re

  • 问题内容: 我出于性能原因使用此sql 但是我有一个例外 有什么解决方法可以让我将列表绑定到’in’子句的参数? 问题答案: 对旧问题的新答案,因为自从首次发布此问题/接受的答案以来,似乎某些基本功能已发生更改(如@vicvicvic在@Gary的答案中所暗示的,但我认为它应该是提高可见度的答案) 。 现在支持类型修改,类型修改除了其他功能外,还允许将列表传递到查询中的单个参数化值中。这也可以在S

  • 我有一个包含数据的表,我想在其中添加一个页脚,以便累加并显示每行中int值的总和。 我尝试了以下代码。 我的表格如下: 我的Vue数据 我现在得到的只是一个反映页眉的页脚。 这是在引导Vue自定义头文档之后编写的,但在细节上非常粗略,没有提供如何添加真正自定义信息的真实信息。我只想我的模板显示在页脚。 编辑:好吧,我确实弄明白了以下几点。还是不是我想要的。 我意识到Bootstrap-Vue设置的

  • 我的目标是从用户输入的“AM”-“PM”字符串格式打印包含24小时十进制格式的进入和退出时间的列表,如以下字符串数组:{6AM#8AM,11AM#1PM,7AM#8PM,7AM#8AM,10AM#12PM,12PM#4PM,1PM#4PM,8AM#9AM} 我在for循环中声明了各个列表,并在循环中为它们赋值,但从代码中得到了以下运行时异常:java。lang.IndexOutOfBoundsEx

  • 我使用Dropwizard Metrics library记录我的应用程序中各种操作的时间,使用计时器和控制台报告器,并将计数、平均速率等记录到控制台fine。 我希望这些数字也可以在 /metricsservlet上使用,并且基于http://metrics.dropwizard.io/3.1.0/manual/servlets/我需要访问名为的Metric注册表。但是查看文档和代码,我看不到是