개발자

숙소등록시 숙소테이블,객실정보테이블 을 동시에 넣어서 외래키 null값 오류

2024년 02월 20일조회 191

완전신입입니다.. 몇일를찾아보고 해도 제가 로직을 잘못짠건지 모르겠어서 질문을 남깁니다 숙소등록을 구현중인데 숙소테이블accommodation, 객실정보테이블room_info 두개를 나눴고 객실정보테이블에 aid(숙소테이블 기본키) 외래키로 설정을 했습니다 그리고 마이바티스에 각 테이블별로 insert로 넣었고 MySql 자동키 부분 설정도하였습니다. 서비스단을 각 두개의 클래스를 묶고 roominfo에 aid를 받아서 저장하는 로직으로 넣었습니다 그리고 컨트롤단에서 PostMapping으로 두개를묶은 클래스를 파라미터로 넣었습니다 ㅠㅠ 여기서 궁금한게 1. 테이블을 나눠서 한번에 저장할 때 다른분들은 어떻게 처리하는지 궁금합니다. 2. 숙소등록을 입력할때 필드값이 동시에 진행되는부분이라 객실테이블에 지정된 외래키aid 가 아직 없으니까 null값으로 들어가서 자꾸 aid를 찾을수없다는오류가 나오는데 이 부분을 어떤식으로 처리해야하는지 키워드를 말씀해주시면 감사하겠습니다...

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

조용구님의 프로필 사진

안녕하세요 :) 스프링 부트로는 구현해 본 적은 없으나 대략 알고 있는 부분이 있어서 답변드려봅니다. 제 생각에는 숙소 테이블에 숙소 INSERT 후에 ID를 반환받아서 객실 테이블에 숙소 ID를 외래 키를 사용하면 될 것 같아요. 즉, 숙소와 객실이 동시에 생성되지 않고, 숙소 생성 후 객실이 생성되도록 애플리케이션 레벨에서 처리가 필요할 것 같아요.

Angela님의 프로필 사진

Angela

작성자

백엔드 개발자2024년 02월 20일

답변감사합니다! 숙소등록 유저페이지에서 입력할때 숙소테이블이랑 객실테이블에 필요한 값이 들어가서 동시에저장해야하는부분이라서 저도 처음이라 너무 헤맸는데요.. ㅠㅠ 코드를보니 1.객실테이블에 숙소테이블 외래키를 keyProperty="aid" 로만 넣고 마이바티스 필드값?으로 aid를 추가하지않았고 그 값을 제가 지정한 값으로 넣어주었습니다 2. 서비스단에 동시에 저장하는 메서드를 숙소를 정보를 저장하는곳에 추가하였습니다! 이렇게 두개 수정하였더니 동시이 저장되면서 숙소아이디를 받아오면서 객실정보에도 저장이 됐습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!