티스토리 뷰

반응형

 

JPA로 업데이트문을 만들었는데

import shop.janes.apis.web.v1.domain.record.entity.Record
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Modifying
import org.springframework.data.jpa.repository.Query

interface RecordRepository : JpaRepository<Record, String> {

	@Modifying
	@Query("update Record r set r.used = :used where r.id = :id")
	fun updateUsedById(id: String, used: String)

}

아래와 같이 Exception이 떨어졌다.

org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

 

 

 

이유는 UPDATE 문, DELETE 문의 경우엔 @Transactional 어노테이션을 추가해주지 않았기 때문이다.

 

 

아래와 같이 @Transactional 어노테이션을 추가해주면 해결!

import shop.janes.apis.web.v1.domain.record.entity.Record
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Modifying
import org.springframework.data.jpa.repository.Query
import org.springframework.transaction.annotation.Transactional

interface RecordRepository : JpaRepository<Record, String> {

	@Transactional
	@Modifying
	@Query("update Record r set r.used = :used where r.id = :id")
	fun updateUsedById(id: String, used: String)

}

 

 

 

이 때, @Transactional 어노테이션을 임포트할 때 주의해야할 점이 있다.

javax.transaction.Transactional이 아닌 org.springframework.transaction.annotaion.Transactional을 선택해야 한다.

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함