2017-04-21 17 views
1

私は一日経過したレコードを削除する以下のように、私は春データJPAでのSQLクエリを使用しています:春データJPA、ネイティブクエリHibernateの例外

:私のように、例外を取得しています

@Query(value = "delete from tableName data where data.CREATION_DATE < TRUNC(SYSDATE) - 1", nativeQuery = true) 
    void deleteRecordsOlderThanYesterday(); 

によって引き起こさ:org.springframework.orm.jpa.JpaSystemException:org.hibernate.HibernateException:によって引き起こされる結果セットのメタデータ を抽出できませんでしたjava.sql.SQLSyntaxErrorException:によって引き起こされる結果セットのメタデータ

を抽出できませんでしたORA -00900:無効なS QLステートメント

上記のコードに問題がありますか、またはHQLでそれを行う他の方法はありますか?

お知らせください。

答えて

2

SQL文からクエリを定義するときはいつでも(UPDATE、DELETE)を使用する必要があります注釈(org.springframework.data.jpa.repositoryから)。これを試してみてください:

@Modifying 
@Query(value = "delete from tableName data where data.CREATION_DATE < TRUNC(SYSDATE) - 1", 
     nativeQuery = true) 
void deleteRecordsOlderThanYesterday(); 
+0

@infiniteRefactorを使用して削除することができています...あなたの答えのためのおかげで、私はuが右rと私は私のsysにウル答えを確認した後にウル答えを受け入れるだろうと思います – Khushi

0

あなたはより良いあなたが春のドキュメントhttp://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html

と、この質問Object Recovery via a date with spring data

を見ることができます詳細については@query

public List<yourResult> findByStartDateBefore(Date date); 

を使用する必要がJpaRepositoryを使用してfindByStartDateBeforeを使用すると、あなたはいけないと思います

+1

こんにちはAzzabi、私はdeleteByCreationDateBefore、感謝 – Khushi

関連する問題