본문 바로가기
자기개발/새싹톤_POA

intellij springboot jpa save가 왜 안될까

by 금화맘 2023. 6. 8.

오늘 데이터를 responsebody에 넣어 json으로 예쁘게 담아 http요청을 보냈는데 저장이 안됐다. 자꾸 "not-null property references a null or transient value: 도메인.엔티티.id" 에러가 떳다.

그러기엔 난 너무나 당당하게 json에다가 id를 넣었다. index가 아닌 게시글의 id다.

진짜 chatgpt한테도 물어봤는데 

  1. JSON 데이터를 @RequestBody 어노테이션을 사용하여 컨트롤러의 메서드 매개변수에 직접 매핑하고 있습니다. 이 경우, 스프링은 요청의 Content-Type을 기반으로 데이터를 파싱하려고 시도합니다. Content-Type이 application/json이라고 가정하고 있습니다. 따라서 요청 헤더에 Content-Type: application/json이 올바르게 설정되어 있는지 확인하세요. 그렇지 않은 경우 스프링은 JSON 데이터를 올바르게 파싱하지 못하고 null 값으로 설정할 수 있습니다.
  2. 게시글_id가 올바른 데이터베이스 키(@Id)로 사용되는지 확인하세요. 데이터베이스에서 해당 필드가 자동으로 생성되거나, 요청 시에 클라이언트에서 제공되어야 하는지 확인하세요. 데이터베이스 스키마와 엔티티 설정을 다시 확인하여 일관성이 있는지 확인하세요.
  3. Dto와 Entity 사이의 매핑이 정확하게 이루어지고 있는지 확인하세요. Dto 객체에서 게시글_id필드를 올바르게 가져오는지 확인하고, Entity로 매핑될 때 게시글_id 필드를 제대로 설정하는지 확인하세요.
  4. Entity의 게시글_id 필드가 null이 아니도록 설정되어 있는지 확인하세요. 필드의 @Column(nullable = false) 설정을 다시 확인하세요.

를 해결하란다

지금은 구축 기간인건 떠나서 이건 index가 아니라서 @ID를 해줄 필요 없는 컬럼이었고, notnull은 필수기 때문에@Column설정을 풀수 없었다.

그래서 내가 오타를 냈다 다시한번 해봤지만 오타는 없었다. 

그래서 run 시키기 전에 내가 오타를 냈던 걸 기억하고 그 전에 out 폴더와 generated폴더를 삭제하고 gradle에서 clean과 build를 다시 한 다음 run을 시켰다. 데이터가 저장이 된다. 다행이었다. jpa가 쉬운줄 알았는데 역시 베이스 없이 닥치고 만들고자 하니깐 어렵다는걸 다시 느끼고 있다. 하지만 지금 강의를 들으면서 할 시간은 너무 없는 것같다. 새싹톤에서 서비스 링크를 갑자기 제출하라 해서 aws에 올릴 준비도 해야한다. 제출물은 11일까지인데 16일까지 코드 수정은 가능하다고 하던데 이게 말인가 싶지만... 어쨌든 참여를 했으니 꼭 좋은 결과를 보여야겠다. 나름 하나씩 해결하다 보니 즐거움도 느끼고 있어서 인생 재미있다고 느끼는 요즘이다.