Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: A different object with the same identifier value was already associated with the session :
< 아래는 틀린 추측입니다.>
this.coEffect.clear();
// 1) 이렇게 clear() 해주고
Set<CoCoEffect> coCoEffectsList =
~~~~
).collect(Collectors.toSet());
// 2) 새로 리스트 만들어주고
this.coEffect.addAll(coCoEffectsList);
// 3) 더해주는데
1) 기존 리스트 clear() 해주고,
2) 새로 리스트 만들어주고
3) 더해주는데
clear() 하면서 아예 배열이 날아가버리지
그래서 new ArrayList();
를 새로 할당해주고 addAll() 이렇게 해줬어야 하는 것
this.coEffect.clear();
// 1) 이렇게 clear() 해주고
this.coEffect = new HashSet(); // list 라면 new ArrayList(); // 이 부분 추가!
Set<CoCoEffect> coCoEffectsList =
~~~~
).collect(Collectors.toSet());
// 2) 새로 리스트 만들어주고
this.coEffect.addAll(coCoEffectsList);
// 3) 더해주는데
흠 그래도 제대로 해결이 안된다
javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session :
아마 clear() 시킨 아이가 여전히 세션에 남아있어서 그런 것 같움
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: A different object with the same identifier value was already associated with the session : [eci.server.CRCOModule.entity.CoNewItem#eci.server.CRCOModule.entity.CoNewItemId@cef3d1e3]; nested exception is javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [eci.server.CRCOModule.entity.CoNewItem#eci.server.CRCOModule.entity.CoNewItemId@cef3d1e3]] with root cause
- 따라서 기존에 아이디가 동일한 게 있으면 기존 아이템을 add 해주고
- 기존에 아이디가 없는 아이템일 경우에만 새로 생성해주도록 변경하니 해결!