Pat*_*ard 2 spring jpa spring-data spring-data-jpa
我有一个带有查找程序的简单JpaRepository,该查找程序按降序返回由名为“ number”的属性排序的记录。“ number”属性也是我实体的@Id。这很好用,但是有成千上万的记录,因此我想返回一个Page而不是一个List。
@Repository
public interface ReceiptRepository extends JpaRepository<Receipt, BigDecimal> {
@Query
public List<Receipt> findByStorerOrderByNumberDesc(String storer);
}
Run Code Online (Sandbox Code Playgroud)
如果我将查找器更改为以下内容,则排序将不再起作用。我试过使用Pageable参数的排序功能,但是没有用。还删除了OrderByNumberDesc,但结果相同。
@Repository
public interface ReceiptRepository extends JpaRepository<Receipt, BigDecimal> {
@Query
public Page<Receipt> findByStorerOrderByNumberDesc(String storer, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
编辑-添加的控制器方法
以下是我的控制器方法。
@RequestMapping(method = RequestMethod.GET, produces = {"application/json"})
public PagedResources<Receipt> receipts(Pageable pageable, PagedResourcesAssembler assembler) {
Page<Receipt> receipts = receiptRepository.findByStorer("003845", pageable);
return assembler.toResource(receipts, receiptResourceAssembler);
}
Run Code Online (Sandbox Code Playgroud)
我觉得这里缺少一些非常基本的东西。
我正在使用Spring Data JPA 1.5.2和Commons 1.7.2。
谢谢 :)
创建排序时,将其添加到您的Pageable中:
例如
Pageable pageable ...;
pageable.getSort().and(new Sort(Direction.ASC, "prop1", "prop1"));
Run Code Online (Sandbox Code Playgroud)
或者在Spring MVC中,您可以执行以下操作:
@RequestMapping(method = RequestMethod.GET, produces = {"application/json"})
public PagedResources<Receipt> receipts(@PageableDefaults(sort = { "x",
"y", "z" }, value = 10)Pageable pageable, PagedResourcesAssembler assembler) {
Page<Receipt> receipts = receiptRepository.findByStorer("003845", pageable);
return assembler.toResource(receipts, receiptResourceAssembler);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5575 次 |
| 最近记录: |