Mad*_*ddy 4 java spring hibernate spring-mvc spring-data-jpa
我有一个实体锦标赛如下:
class Tournament {
//other attributes
private LocalDate startDate;
private LocalDate endDate;
}
Run Code Online (Sandbox Code Playgroud)
这代表从开始日期到结束日期持续几天/几个月的锦标赛。我需要检索今天运行的所有锦标赛,例如startDate <= Today && endDate >= Today,使用 Spring JPA 和分页。
我发现的最接近的如下:
@Repository
public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {
Page<Tournament> findByStartBeforeAndEndAfter(LocalDate date, LocalDate dateCopy, Pageable page); //today's date is passed as date and dateCopy
}
Run Code Online (Sandbox Code Playgroud)
方法调用:
tournamentRepository.findByStartBeforeAndEndAfter(LocalDate.now(), LocalDate.now(), page);
Run Code Online (Sandbox Code Playgroud)
这可以解释为startDate < Today && endDate > Today,因此如果锦标赛在今天运行且仅持续 1 天,则该方法不起作用。
有没有更好的方法使用 Spring JPA 来执行此操作,而无需编写自定义查询?
您可以将 LessThan、GreaterThan、LessThanEqual、GreaterThanEqual 与日期一起使用。
@Repository
public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {
Page<Tournament> findByGreaterThanEqualStartDateAndLessThanEqualEndDate(LocalDate date, LocalDate dateCopy, Pageable page); //today's date is passed as date and dateCopy
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17503 次 |
| 最近记录: |