Database/PostgreSQL

[PostgreSQL] @Transactional(readOnly=false)

Ma_Sand 2023. 5. 22. 18:18
반응형

Spring MVC에서 PostgreSQL로 INSERT를 하려고 했는데

ERROR: cannot execute INSERT in a read-only transaction 라는 에러가 발생하였다.

 

이는 PostgreSQL의 트랜지션이 읽기 전용으로 되어 있어 발생하는 것이다.

이땐, INSERT 구문을 실행하는 메소드에 @Transitional(readOnly=false) 라는 어노테이션을 선언해주면 된다.

readOnly의 값이 true가 default이므로 false로 변경하여 insert도 할 수 있게 만들어준다.

// 예시
@Override
@Transitional(readOnly=false)
public ResultModel insertData(UserModel user_model) {
    ...
}

 

@Transitional() 어노테이션을 작성할 때 주의할 점은 라이브러리다.

import org.springframework.transaction.annotation.Transactional;

위 라이브러리를 임포트해야 한다.

다른 라이브러리로 임포트하면 readOnly 부분이 빨간 밑줄로 뜨면서 인식되지 않는다.

반응형