注释属性Query.value的值必须是一个常量表达式

时间:2019-06-16 18:46:11

标签: java jpa spring-data-jpa spring-data

我想用删除查询实现存储库。

@Repository
public interface LogRepository extends JpaRepository<Log, Integer>, JpaSpecificationExecutor<Log> {

    @Modifying
    @Query("delete from " + Log.class.getName() + " r where r.createdAt <= ?1") 
    int deleteByCreatedAt(LocalDateTime createdAt);
}

但是我收到错误The value for annotation attribute Query.value must be a constant expression

是否有实现此目的的方法?

1 个答案:

答案 0 :(得分:2)

查询"delete from " + Log.class.getName() + " r where r.createdAt <= ?1"的确不是恒定的,因为它将随着Log类的变化而变化。但是,为什么要保持这种动态?不像您会经常更改数据库中的表名。只需静态定义它,您就可以开始使用。