在localdate列中添加一些天

时间:2018-05-09 15:49:18

标签: jpa spring-data-jpa jpql

我使用spring data jpa

我搜索做类似

的事情
@Query("update FROM sample s set s.availableForTest=true WHERE (s.buildDate + s.delay) <= date and availableForTest=false")
public void updateToAvailabilityForTest(@Param("date") LocalDate date);

延迟是添加的天数

似乎不太可能使用JPQL

1 个答案:

答案 0 :(得分:1)

不,这在JPQL中是不可能的。即使在简单的SQL中,这至少在SQL Server和MySQL中也是可能的。有专门的功能:

SQL Server - DATEADD

MySQL - DATE_ADD

我认为在Oracle中有可能。

所以最简单的方法是使用此日期添加功能进行本机查询。

如果您希望保留JPQL世界并且可以使用JPA 2.1,那么他们在JPQL中引入了FUNCTION函数,您可以使用它来调用数据库函数。

请注意:

  

FUNCTION是特定于数据库的 - 它不会转换函数   以任何方式调用以支持不同的数据库作为其他JPQL函数   做。

在您的情况下并使用SQL Server,它将如下所示:

update FROM sample s set s.availableForTest=true WHERE FUNCTION('DATEADD', 'day' , s.delay, s.buildDate) <= :date and availableForTest=false

虽然我没有测试过身份。