Java Spring JPA方法查找具有Before和Equal日期以及Before和Equal日期的实体

Java Spring JPA方法查找具有Before和Equal日期以及Before和Equal日期的实体,java,spring,hibernate,spring-mvc,spring-data-jpa,Java,Spring,Hibernate,Spring Mvc,Spring Data Jpa,我有一个实体锦标赛如下: class Tournament { //other attributes private LocalDate startDate; private LocalDate endDate; } 这代表了从开始日期到结束日期持续数天/数月的锦标赛。 我需要使用Spring JPA和分页检索今天运行的所有锦标赛,比如startDate=today 我发现最接近的是: @Repository public interface TournamentRep

我有一个实体锦标赛如下:

class Tournament {
    //other attributes
    private LocalDate startDate;
    private LocalDate endDate;
}
这代表了从开始日期到结束日期持续数天/数月的锦标赛。 我需要使用Spring JPA和分页检索今天运行的所有锦标赛,比如startDate=today

我发现最接近的是:

@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

}
这可以解释为startDatetoday,因此,如果比赛在今天举行,并且仅持续1天,则此功能不起作用

有没有更好的方法可以使用Spring JPA而不必编写自定义查询?

是JPA中预定义的函数。你可以用这个

试试这个

@Repository
public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {

    @Query("Select t from Tournament t where t.startDate <= CURRENT_DATE and t.endDate >= CURRENT_DATE")
    Page<Tournament> findByStartBeforeAndEndAfter(Pageable page);

}
@存储库
公共接口TournamentRepository扩展了分页和排序存储库{
@查询(“从锦标赛t中选择t,其中t.startDate=当前日期”)
页面查找系统启动前和启动后(可分页页面);
}
是JPA中预定义的函数。你可以用这个

试试这个

@Repository
public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {

    @Query("Select t from Tournament t where t.startDate <= CURRENT_DATE and t.endDate >= CURRENT_DATE")
    Page<Tournament> findByStartBeforeAndEndAfter(Pageable page);

}
@存储库
公共接口TournamentRepository扩展了分页和排序存储库{
@查询(“从锦标赛t中选择t,其中t.startDate=当前日期”)
页面查找系统启动前和启动后(可分页页面);
}

您可以使用
@Query
注释编写他自己的查询,如下面的代码所示

@Repository
    public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {
        @Query("select t from Tournament t where t.startDate <=:date and t.endDate >=: dateCopy")
        Page<Tournament> findByStartBeforeAndEndAfter(@Param("date")LocalDate date,@Param("dateCopy") LocalDate dateCopy, Pageable page); //today's date is passed as date and dateCopy

    }

您可以使用
@Query
注释编写他自己的查询,如下代码所示

@Repository
    public interface TournamentRepository extends PagingAndSortingRepository<Tournament, Long> {
        @Query("select t from Tournament t where t.startDate <=:date and t.endDate >=: dateCopy")
        Page<Tournament> findByStartBeforeAndEndAfter(@Param("date")LocalDate date,@Param("dateCopy") LocalDate dateCopy, Pageable page); //today's date is passed as date and dateCopy

    }

您可以将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

}
@存储库
公共接口TournamentRepository扩展了分页和排序存储库{
Page FindByCreaterTanequalStartDateAndLessThanequalEndDate(LocalDate日期、LocalDate日期副本、可分页页面);//今天的日期作为日期和日期副本传递
}

您可以使用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

}
@存储库
公共接口TournamentRepository扩展了分页和排序存储库{
Page FindByCreaterTanequalStartDateAndLessThanequalEndDate(LocalDate日期、LocalDate日期副本、可分页页面);//今天的日期作为日期和日期副本传递
}

您是否尝试过
FindBystartDateLesstAnequal
?说明了
LessThanEqual
GreaterThanEqual
是受支持的关键字。您是否尝试过
查找系统启动日期lessthanequalandedatageraterhanequal
?说明
小于等于
大于等于
是受支持的关键字。