Java 有没有一种更简单的方法可以使用BETWEEN进行JPQL查询,以便在属性中包含空值
我有一个JPQL查询Java 有没有一种更简单的方法可以使用BETWEEN进行JPQL查询,以便在属性中包含空值,java,jpa,jpql,Java,Jpa,Jpql,我有一个JPQL查询 @Query("SELECT e FROM Entry e WHERE :chosenDate BETWEEN e.periodFrom AND e.periodTo") List<Entry> findByChosenDate(LocalDate chosenDate); @Query(“从条目e中选择e,其中:e.periodFrom和e.periodTo之间的chosenDate”) 列表findByChosenDate(LocalDat
@Query("SELECT e FROM Entry e WHERE :chosenDate BETWEEN e.periodFrom AND e.periodTo")
List<Entry> findByChosenDate(LocalDate chosenDate);
@Query(“从条目e中选择e,其中:e.periodFrom和e.periodTo之间的chosenDate”)
列表findByChosenDate(LocalDate chosenDate);
存在一个问题,即当其中一个属性“periodFrom”或“periodTo”未设置时,将不会选择条目。我希望查询还包括具有一个或两个空值的entires
我希望查询在另外三种情况下选择条目:
SELECT e FROM Entry e WHERE (:chosenDate BETWEEN COALESCE(e.periodFrom, 0000-01-01) AND COALESCE(e.periodTo, 9999-12-31)
您是否考虑过向查询提供一些默认值,以便它不会直接处理空值<代码>合并将日期合并为一些合理的默认值,以便它们仍然满足您的标准我没有考虑提供默认值,但我会考虑一下。是的,使用合并可以缩短查询。根据数据库的不同,您可能需要使用
0001-01-01
作为日期下限。
SELECT e FROM Entry e WHERE (:chosenDate BETWEEN COALESCE(e.periodFrom, 0000-01-01) AND COALESCE(e.periodTo, 9999-12-31)