주어진 과제를 하고 있는데 아무리 delete를 해도! 적용이 안돼!
코드를 아무리 들여다봐도 문제가 없었고 페이지 리다이렉팅도 됐고
화면상에서도 사라지는데! DB에 적용이! 안돼!
delete 메소드 그거 몇줄이나 된다고 암튼 들여다 보다가 도저히 모르겠어서
멘토님한테 SOS 보냈는데 1초 만에 해결했다.
서비스 시작 지점에 달려있던 @Transactional(readOnly=true) 를 흐린눈 하고 넘어가버린것이었다.
자자 여기서 @Transactional에 readOnly=true가 걸리면 무슨 일이 일어나는지 다시 한 번! 확실히 기억하고 가쟈
- readOnly = ture
- 스프링 프레임워크가 하이버네이트 세션 플러시 모드를 MANUAL로 설정해 강제로 플러시를 호출하지 않는 한 플러시가 일어나지 않는다
- 트랜잭션을 커밋하더라도 영속성 컨텍스트가 플러시 되지 않아 엔티티의 등록/수정/삭제가 동작하지 않는다
- 등록/수정/삭제를 하기 위해서는 원하는 메소드 위에 @ Transactional을 붙여줘야 한다!
- 이거 까먹어서 delete가 안되는 부분이 뭐가 문제일까 한동안 고민하고 있었다 😥
- 읽기 전용이므로, 영속성 컨텍스트는 변경 감지를 위한 스냅샷을 보관하지 않으므로 성능이 향상된다
'오늘의 뚝딱 > ERROR' 카테고리의 다른 글
org.springframework.beans.factory.UnsatisfiedDependencyException (0) | 2023.05.02 |
---|---|
Injection of autowired dependencies failed (0) | 2023.04.30 |
java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "~" is null (0) | 2023.03.22 |
[MySQL] sql_mode=only_full_group_by 오류 해결 (0) | 2023.03.09 |
[ERROR] Access denied for user 'root@'localhost' (using password: YES) (0) | 2023.02.09 |
댓글