개발 일기

에러 가설 세우기 - Debugging. 본문

TIL(Today I learned)

에러 가설 세우기 - Debugging.

flow123 2021. 11. 19. 02:55

내 에러 해결 케이스  

 

Debugging 을 계속 넘기면 원래 회색 글씨가 계속 뜨면서 변수가 읽혀야 함. 

save 를 한다는 것은 객체에 영속화를 한다는 것. 메모리 어딘가에 할당이 됨 (user DB에 기록이 됨.) 

 

콘솔 에러메시지를 보면, did not return a unique result 메시지가 나온다. (즉, unique result 를 기대했다는 뜻이다. )

파랑 글씨로 어디에서 막혔는지 친절히 알려준다. 

영속성 컨텍스트 실습을 하다가, 나온 에러이다. 영속성이라 함은, founduser1, founduser2 이런 식으로, user1 이라는 아이디 값을 여러번 호출해도 같은 객체를 가져오는 것이다. 내가 여러번 돌리다보니, DB에 USER 가 계속 쌓여서 테이블에 USER1 이 USERNAME 인 값이 2개가 생겼다. 이미 값이 2개나 있으니, 저장을 하면 USER1이 하나 더 더해져서 3개가 되는 것이다. 그러니 고유값을 불러올 수 없다. 

DB 를 지워주고 다시 debug 한다. 그러면 새로 객체 user1이 생성되니 순조롭게 값이 읽히는 것을 확인할 수 있다. 

메소드 특성상 Unique result 나와야 하니까 변수를 List<> findall 선언할 수도 있었을 것이다. 

 

#Debugging 하는 .

-에러 가설을 세울 . 한번이라도 생각하고 구글링하기.

-Resume 버튼: breakpoint걸렸을 다음으로 넘어가는 .

-Rerun:껐다 키는 .

 

 

#민님 에러 해결 쉐도잉 

 

MemoClass 에 NoArgsConstructor 어노테이션이 생성되어있다. Memo를 생성하면서 variables cannot be assigned to.. 류의 에러가 있었다. -> Parameter 없는 애만 생성되었는데 (NoArgsConstructor), 파라미터를 넘겨주는 애를 만드니까 형변환이 안되서 에러가 발생한다. 

 

방법은 2가지가 있다.  

(1)LomBok 으로 생성자 어노테이션을 붙여주거나

(2)Constructor를 직접 만들기. 

 

RequiredArgsConstructor를 쓰면, 아래 중 Name, memo, id 변수가 nullable = false 니까, 내부적으로는 세개를 파라미터로 받는 생성자가 생긴다.

 

Controller 가보면..

Lombok 멤버변수 토대로 만들기 때문에, 새로운 타입을 생성자가 넣어줄 없다. 그러니 생성자를 수동으로 넣어줘야 .

 

#already defined 에러. Default 생성자가 이미 적용이 되어져 있다...

-Default 생성자 한번 선언했다.

-RequiredArgsConstructor (멤버변수중 파라미터를 받아야 하는 애가 있다면, 멤버변수가 들어가는 생성자를 만들어줘)

-> final 받을 멤버변수 없음.

Final 들어가면 받아야 하지만 final 없어도 되기 때문에. No Args

Final 있었다면 RequiredArgs를 쓰면된다. 

 

 

출처: 

오늘 나의 디버깅을 넥스트레벨로 올려준 선만님 

'TIL(Today I learned)' 카테고리의 다른 글

2달차 회고 WIL - 4FS  (0) 2021.11.22
위클리테스트 - 스프링 CR  (0) 2021.11.19
Hello World!  (1) 2021.11.04
SQL 데이터베이스 활용하기  (0) 2021.10.13
AWS S3 와 IAM  (0) 2021.10.10
Comments