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