JPAの@QueryでDelete処理を書いた場合のつまづきポイント

蓄積された過去のデータベースのデータを削除するバッチアプリケーションを追加しようとした時に、JPAを使って削除処理を書こうと思ったときに若干苦戦したのでメモっておく。

Query methodsがあるかなと思ったけど、日付を指定して削除するロジックはうまく出来なさそうだったから、@Queryアノテーション付けてSQLを呼ぶように変更。

注意1

テーブル名、カラム名を指定するときは、Entityクラスに従って指定する事。最初、普通に以下のようにSQLを書いて「tbl_played_songs is not mapped」のようにマッピング出来ねぇよと怒られた。

注意2

削除するときは、@Modifyingと@Transactinalを付ける。付けないと「Not supported for DML operations」、「TransactionRequiredException: Executing an update/delete query;」とかで怒られる。まぁそうよね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です