我试图根据两个timstamp之间的比较来提取记录。这是我的假设代码,但它不起作用:
@Query("SELECT n FROM table1 n WHERE n.status IN ('FAILED') AND :currentDate- n.updatedDate > n.interval/24*60*60")
List<Entity> findAllSuchEntities(@Param("currentDate") DateTime currentDate);
错误消息是:org.h2.jdbc.JdbcSQLException:未知数据类型:&#34;?&#34 ;; SQL语句。
相比之下,以下查询可以通过编译:
@Query("SELECT n FROM table1 n WHERE n.status IN ('FAILED') AND :currentDate > n.updatedDate")
List<Entity> findAllSuchEntities(@Param("currentDate") DateTime currentDate);
答案 0 :(得分:0)
试试这个:
@Query("SELECT n FROM table1 n WHERE n.status IN ('FAILED') AND n.updatedDate < (:currentDate - (n.interval/24*60*60))")
这也是一个更好的解决方案,因为您之前的查询很可能会导致全表扫描。