SPRING FRAMEWORK

JPA @Modifying ??

Ambitions 2020. 3. 3. 10:38

개발을 하던도중 delete from table where id = id 에 해당하는 기능을 JpaRepository를 이용해 구현해야 할일이 있어서 deleteById를 구현체로 만들었더니 Not supported for DML operations 이라는 오류를 확인하게 되었다..

따라서 검색을 해본결과 JPA에서 DDL과 insert, delete, update에 해당하는 쿼리에는 select 쿼리가 아니라는 나타낼 수 있는 @Modifying 어노테이션을 선언해줘야 사용할 수 있다는 것이였다.

@Modifying 어노테이션을 선언해주니 실행해보니 잘 동작한다..

그런데 왜 selelct문을 제외한 쿼리에서는 저 어노테이션이 필요한지는 조금 더 알아봐야 할 것 같다.

public interface TestRepo extends JpaRepository<Entity, String>, QuerydslPredicateExecutor<Entity> {
    
        void deleteById(String id);  //오류
        
        @Modifying
        void deleteById(String id);  //잘작동함
    
    }

P.S : DDL은 create, alter, delete, drop ... 등을 뜻함.