Spring Data JPA,本地查询Hibernate异常

3
我想删除一天前的记录,我正在使用Spring data JPA中的以下SQL查询语句:
@Query(value = "delete from tableName data where data.CREATION_DATE < TRUNC(SYSDATE) - 1", nativeQuery = true)
    void deleteRecordsOlderThanYesterday();

我得到了以下异常:

Caused by: org.springframework.orm.jpa.JpaSystemException: 无法提取结果集元数据 Caused by: org.hibernate.HibernateException: 无法提取结果集元数据

Caused by: java.sql.SQLSyntaxErrorException: ORA-00900: 无效的 SQL 语句

以上代码有什么问题,或者还有其他使用HQL的方法吗?

请告诉我。

2个回答

7
无论何时您从SQL语句(UPDATE,DELETE)定义查询时,都需要使用@Modifying注释(来自org.springframework.data.jpa.repository)。尝试以下代码:
@Modifying
@Query(value = "delete from tableName data where data.CREATION_DATE < TRUNC(SYSDATE) - 1", 
        nativeQuery = true)
void deleteRecordsOlderThanYesterday();

@infiniteRefactor...感谢您的回答,我认为您是正确的,我会在检查您的答案后接受它。 - Khushi

1

1
你好Azzabi,我能够使用deleteByCreationDateBefore进行删除,谢谢。 - Khushi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接