我使用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
答案 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
虽然我没有测试过身份。