강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

부리부리님의 프로필 이미지
부리부리

작성한 질문수

Reponse Dto

작성

·

58

0

postman으로 음식 상세 조회를 할 때 반환값 store : null 로 나오는데
store의 name 가져오는 방법이 있을까요?




<FoodService>

음식 상세조회 하는 코드 구조는 위와 같습니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이혜지님, 문의하신 내용에 대해 답변 드립니다.

음식 상세 조회 시, store 값이 null로 반환되는 문제를 해결하기 위해 store의 이름을 가져오는 방법에 대해 질문하셨습니다. 제공된 이미지와 설명을 바탕으로, Food 엔티티 클래스에 @ManyToOne 관계와 @JoinColumn(name="store_id")를 사용하여 Store 엔티티와 연관 관계를 맺고 있는 것으로 보입니다. 이 부분이 올바르게 구성되어 있음에도 불구하고 store 정보가 null로 반환된다면, FoodDto의 변환 과정에서 store 정보를 포함시키지 않기 때문일 수 있습니다.

FoodService 클래스의 findById 메소드에서 Food 객체를 FoodDto 객체로 변환할 때, store 정보를 포함시키도록 createFromEntity 메소드를 수정하거나 새로운 메소드를 추가해야 합니다. 아래는 storeNameFoodDto로 전달하기 위해 수정할 수 있는 방법의 예시입니다.

createFromEntity 메소드나 해당 메소드의 로직에서 storeName을 설정해 주는 부분을 찾아 수정합니다. 예를 들어, Food 엔티티의 store 필드가 null이 아니라면 해당 storenameFoodDtostoreName에 설정하도록 합니다.

public static FoodDto createFromEntity(Food food) {
    if (food.getStore() != null) {
        return new FoodDto(
                food.getFoodId(),
                food.getName(),
                food.getPrice(),
                food.getStore(),
                food.getStore().getName() // store의 이름을 설정
        );
    } else {
        // store 정보가 없을 경우의 처리
        return new FoodDto(
                food.getFoodId(),
                food.getName(),
                food.getPrice(),
                null,
                null // storeName을 null로 설정하거나 다른 로직 적용
        );
    }
}

위의 예시 코드는 FoodDto 객체를 생성할 때 store 필드가 null이 아니면 해당 store의 이름을 storeName에 설정하는 방법을 보여줍니다. 실제 구현 시 FoodDto 클래스의 생성자 파라미터나 빌더 패턴에 맞게 코드를 조정해야 할 수 있습니다.

이 방식을 적용하면 API 응답에서 storeName에 해당 스토어의 이름을 제대로 받을 수 있을 것입니다.

부리부리님의 프로필 이미지
부리부리

작성한 질문수

질문하기