강의

멘토링

로드맵

Inflearn brand logo image

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

동민님의 프로필 이미지
동민

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발2

카테고리 다대다 매핑 => 다대일, 일대다로 매핑

작성

·

429

1

@ManyToMany를 다대일 일대다 관계로 바꿔보았는데 

이렇게 바꾸는 게 맞을까요??

<CategoryItem.java>

package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Getter @Setter
public class CategoryItem {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_item_id")
private Long id;

@ManyToOne
@JoinColumn(name = "category_id")
private Category category;

@ManyToOne
@JoinColumn(name = "item_id")
private Item item;
}

<Category.java>

package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

import static javax.persistence.FetchType.*;

@Entity
@Getter @Setter
public class Category {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private Long id;

private String name;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "parent_id")
private Category parent;

@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();
}

<Item.java>

package jpabook.jpashop.domain.item;

import jpabook.jpashop.domain.Category;
import jpabook.jpashop.domain.CategoryItem;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter @Setter
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "DTYPE")
public abstract class Item {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "item_id")
private Long id;
private String name;
private int price; // 가격
private int stockQuantity; // 재고수량

@OneToMany(mappedBy = "item")
private List<CategoryItem> categoryItems = new ArrayList<>();
}

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 에러나면짖는개님

잘 변경하셨습니다^^

선생님 다름이 아니라 위의 코드를 봤는데 혹시 Category 엔티티 클래스에 onetomany로 categoryitem를 매핑해줘야되는게 아닌가요? item엔티티클래스에는 매핑이 되어있는데 category엔티티 클래스에는 매핑이 되어있지 않아서 매핑을 안해도 되는건가 해서 질문드립니다.항상 감사합니다.

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ansxogh97님 JPA 기본편을 통해서 양방향, 단방향 매핑에 대해서 학습하시면 이해가 되실꺼에요^^

동민님의 프로필 이미지
동민

작성한 질문수

질문하기