我正在尝试向PostgreSQL发出请求,如下所示:

@Query(value = "SELECT t FROM Tasks t WHERE daterange(t.date_from, t.date_to) && daterange '(:dateFrom, :dateTo)'", nativeQuery = true)
Page<Task> findTest(@Param("dateFrom") String dateFrom,
                        @Param("dateTo") String dateFrom,
                        Pageable pageable);


由于单引号导致dateFromdateTo的结果值不传递到:dateFrom:dateTo中。
:dateFrom:dateTo看起来像一个字符串。如果我删除引号,则参数可以通过,但是请求当然无效。
那么有什么方法可以将值传递到带引号的(:dateFrom, :dateTo)中?

最佳答案

查询不能在没有引号的情况下工作,因为您正尝试使用以下方式获取数据:

获取任务>日期> 2015 AND日期> 2014

基本上,如果您尝试从2014年6月1日开始执行任务,它将可以正常工作,但是date > 2015并不正确。
因此,我建议您将&&更改为<@,如果我理解您的要求,则任务日期范围将包含在使用parameters构建的范围内。

Here是范围类型的一些不错的运算符。

10-07 20:31