h2 데이터베이스에 엔터티를 만들지도 않았는데 왜 ORDERS_ORDER_ITEMS 테이블이 생성되었는지 잘 모르겠습니다.
529
작성한 질문수 61

<Order 클래스>
package jpabook.jpashop.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(name = "orders")
@Getter @Setter
public class Order {
@Id @GeneratedValue
@Column(name = "order_id") // PK
private Long id;
@ManyToOne // 주문의 입장에서는 다대일 관계
@JoinColumn(name = "member_id") // FK
private Member member;
@OneToMany
private List<OrderItem> orderItems = new ArrayList<>();
@OneToOne
//todo 일대일관계에서는 FK를 아무대나 매핑해도 상관없는데, 주로 엑세스를 많이 하는 엔터티에 사용한다고 함
@JoinColumn(name = "delivery_id")
private Delivery delivery;
private LocalDateTime orderDate; // 주문시간(hibernate가 알아서 매핑해줌)
@Enumerated(EnumType.STRING)
private OrderStatus status;
}
<Item 클래스>
package jpabook.jpashop.domain.item;
import jpabook.jpashop.domain.Category;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 한 테이블에 다 떄려박음
@DiscriminatorColumn(name = "dtype")
@Getter @Setter
public abstract class Item {
@Id
@GeneratedValue
@Column(name = "item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
}
<OrderItem 클래스>
package jpabook.jpashop.domain;
import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@Getter @Setter
public class OrderItem {
@Id @GeneratedValue
@Column(name = "order_item_id")
private Long id;
@ManyToOne
@JoinColumn(name = "item_id")
private Item item;
@ManyToOne
@JoinColumn(name = "order_id")
private Order order;
private int orderPrice; // 주문 가격
private int count; // 주문 수량
}참고로, 다른 엔터티 테이블의 속성들은 설계에 있는 그대로 정상적으로 잘 만들어졌습니다.
답변 2
0
@OneToMany
private List<OrderItem> orderItems = new ArrayList<>();
이 부분에 (mappedBy = "order") 를 추가해서 테스트 해보세요
@OneToMany (mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<>();
0
안녕하세요. Ambition님, 공식 서포터즈 OMG입니다.
ORDERS와 ORDERITEM을 @ManyToMany 다대다 연관관계로 정의하였었나요?
@ManyToMany 를 사용할 경우 중간테이블이 자동으로 생성될 수 있습니다 :)
@ManyToMany로 연관관계를 맺지 않았었다면 댓글 남겨주세요 ^^
감사합니다.
0
아니요, 다만 Item과 Category 엔터티를 @ManytoMany로 매핑하였습니다. 그런데 Order와 OrderItem 엔터티는 @OneToMany 또는 @ManyToOne로 매핑하였는데 왜 이런 현상이 발생한거죠??
0

네 성공했습니다! Category와 Item의 @ManyToMany 관계를 중간에 Category_item 엔터티를 생성해서 Order_item 관계처럼 그대로 적용했더니 사라졌네요 감사합니다 :)
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
142
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
103
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
72
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





