有没有更简单的方法来使用 BETWEEN 进行 JPQL 查询以在属性中包含 NULL 值
Is there an easier way to make a JPQL query with BETWEEN to include NULL values in properties
我有一个 JPQL 查询
@Query("SELECT e FROM Entry e WHERE :chosenDate BETWEEN e.periodFrom AND e.periodTo")
List<Entry> findByChosenDate(LocalDate chosenDate);
存在一个问题,如果未设置 "periodFrom" 或 "periodTo" 属性之一,则不会 select 编辑该条目。我希望查询还包括具有一个或两个 NULL 值的整体。
我希望在另外三种情况下查询 select 条目:
当 "periodFrom" 为空且 "periodTo" 为空时,应找到条目。
当 "periodFrom" 为 null 并且 "periodTo" >=:chosenDate 条目应该被找到。
当 "periodFrom" <= :chosenDate 且 "periodTo" 为空时,应找到该条目。
有没有比 :
更简单的方法来进行这样的查询
@Query("SELECT e FROM Entry e WHERE (:chosenDate BETWEEN e.periodFrom AND e.periodTo)
OR (e.periodFrom IS NULL AND e.periodTo IS NULL )
OR ( e.periodFrom <= :chosenDate AND e.periodTo IS NULL)
OR (e.periodFrom IS NULL AND e.periodTo >= :chosenDate)")
List<Entry> findByChosenDate(LocalDate chosenDate);
我不知道你是否觉得它更好,但像这样的东西会更短:
SELECT e FROM Entry e WHERE (:chosenDate BETWEEN COALESCE(e.periodFrom, 0000-01-01) AND COALESCE(e.periodTo, 9999-12-31)
我有一个 JPQL 查询
@Query("SELECT e FROM Entry e WHERE :chosenDate BETWEEN e.periodFrom AND e.periodTo")
List<Entry> findByChosenDate(LocalDate chosenDate);
存在一个问题,如果未设置 "periodFrom" 或 "periodTo" 属性之一,则不会 select 编辑该条目。我希望查询还包括具有一个或两个 NULL 值的整体。
我希望在另外三种情况下查询 select 条目:
当 "periodFrom" 为空且 "periodTo" 为空时,应找到条目。
当 "periodFrom" 为 null 并且 "periodTo" >=:chosenDate 条目应该被找到。
当 "periodFrom" <= :chosenDate 且 "periodTo" 为空时,应找到该条目。
有没有比 :
更简单的方法来进行这样的查询 @Query("SELECT e FROM Entry e WHERE (:chosenDate BETWEEN e.periodFrom AND e.periodTo)
OR (e.periodFrom IS NULL AND e.periodTo IS NULL )
OR ( e.periodFrom <= :chosenDate AND e.periodTo IS NULL)
OR (e.periodFrom IS NULL AND e.periodTo >= :chosenDate)")
List<Entry> findByChosenDate(LocalDate chosenDate);
我不知道你是否觉得它更好,但像这样的东西会更短:
SELECT e FROM Entry e WHERE (:chosenDate BETWEEN COALESCE(e.periodFrom, 0000-01-01) AND COALESCE(e.periodTo, 9999-12-31)