[JPA] org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations

김득회·2022년 7월 18일
0

JPA

목록 보기
11/11

@Query를 사용하여 delete 쿼리를 만드는 도중 발생한 문제이다.
해당문제는 JPA를 사용하는데 있어서 수정할 수 있는 권한을 지시하는 것이 필요하기 때문에 발생하는 오류이다.
delete에서만 발생하는 것은 아니고, Update와 같은 수정사항이 발생하였을 때도 발생한다.

일반적으로 delete만 선언하여 사용하면, 수정하는 지시사항이 없으므로 발생하는 것이다.

@Query("delete from Ticket t where t.members.oauthId = :oauthId and t.ticketSeq = :ticketSeq")
void deleteByOauthId(String oauthId, Long ticketSeq) throws DataAccessException;

이것을 해결하는 방법은 @Modifying 어노테이션을 추가로 붙혀주는 방법을 통해 쉽게 해결이 가능하다.

@Modifying
@Query("delete from Ticket t where t.members.oauthId = :oauthId and t.ticketSeq = :ticketSeq")
void deleteByOauthId(String oauthId, Long ticketSeq) throws DataAccessException;

추가적으로 Service 단에 @Transactional을 붙혀 주는 것도 잊지 말아야한다.

profile
감성 프로그래머 HoduDeuk

0개의 댓글