如何在使用Pagination和Sorting Spring Data JPA时运行和like子句

时间:2015-10-21 08:27:59

标签: spring hibernate jpa spring-boot spring-data-jpa

我必须执行

的查询
SELECT * FROM transaction WHERE account LIKE '%deepak%' and date_created BETWEEN 'Thu Jan 01 00:00:00 IST 2015' AND 'Wed Dec 16 00:00:00 IST 2015' ORDER BY date_created ASC OFFSET 5 LIMIT 10;

目前我可以使用JPA执行4个功能: -

  • 设置偏移
  • 设置页面大小
  • 设置方向
  • 设置按列名排序

使用以下代码: -

PageRequest request = new PageRequest(1, 10, Sort.Direction.ASC, date_created );
return transactionRepository.findAll(request);

但是如何执行剩余的功能,即'条款和'喜欢'使用分页和使用Spring Data JPA排序的子句

也欢迎其他建议的方法。

2 个答案:

答案 0 :(得分:0)

看看Spring jpa data reference documentation

将此添加到repository

扩展的PagingAndSortingRepository<..,..>
findByAccountLikeAndDateCreatedBetween(String account,Date start,Date end,Pageable pageable)

答案 1 :(得分:0)

如果您熟悉JPQL,则始终可以在存储库中使用@Query注释查询。即:

@Query("select t from transaction t where t.name like ?1")
List<Transaction> getTransactions(String name, Pageable pageable)

其中?1是您传递的第一个参数,在本例中为name。请注意,Pageable必须始终是最后一个参数。这样,您可以根据需要为查询命名。

查看更多信息here