Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- git branch 삭제
- analytics4
- gtihub
- ANTIFRAGILE
- pat발급
- TIOBE
- java
- jetbrain
- 명령어
- 티스토리챌린지
- github
- UNION ALL
- JPQL
- EntityManager
- db종류
- docker
- 자동배포
- JPA
- visual studio code
- Jenkins
- 오블완
- Python
- spring
- MariaDB
- ci/cd
- 르세라핌
- IntelliJ
- git pat
- 애널리틱스4
Archives
- Today
- Total
hanker
java.lang.UnsupportedOperationException 에 대해서 본문
반응형
개발을 하다보면 뭔가 정신줄 놓고 작업할 때가 있는데, 그 시점에 제일 많이 등장하는 예외이다.
이 예외가 왜 나는지? 안나게 하려면 어떻게 해야하는지 알아보자
발생 이유
발생이유는 여러가지가 있는데, 찬찬히 알아보자
1. Java 9 에서 추가된 List.of() 를 사용할 때, List.of()로 생성한 리스트는 읽기 전용이라서 추가/수정/삭제가 안되는데, 이를 하려고 시도하다가 발생
public static void main(String[] args) {
List<String> list = List.of("A", "B", "C");
list.remove("C"); // UnsupportedOperationException 발생
}
반응형
2. Spring JPA 에서 @Transactional(readOnly = true) 로 설정된 트랜잭션 안에서 엔티티의 컬렉션을 수정하려고 하다가 발생
@Transactional(readOnly = true)
public void modifyEntities(List<String> entities) {
entities.add("newEntity"); // UnsupportedOperationException 발생
}
3. JPA에서 Fetch 타입이 Lazy로 설정된 컬렉션을 직접 수정하려고 할 때
@Entity
public class User {
@Id
private Long id;
@OneToMany(fetch = FetchType.LAZY)
private List<Order> orders;
}
// 사용 예시
User user = userRepository.findById(1L);
user.getOrders().add(new Order()); // UnsupportedOperationException 발생
정리
즉 나오는 이유를 정리해보면 수정하면 안되는 애들을 수정을 해서 나오는 오류이다.
반응형
'JAVA' 카테고리의 다른 글
JAVA - int to String ↔ String to int (정수 ↔ 문자열로 변경) (1) | 2024.11.12 |
---|---|
JAVA - 문자열이 특정 문자로 시작하는지 확인하기 : startsWidth() 사용법 (0) | 2024.11.11 |
JAVA - 값 비교 (문자열 / 숫자 등등) (0) | 2024.11.08 |
JAVA - HttpUrlConnection, HttpsUrlConnection (Content-Type 설정) (2) (0) | 2024.10.20 |
JAVA - 멀티 쓰레드 연산처리 (AtomicInteger) (0) | 2024.10.12 |