테이블 간의 연관 관계가 있을 때 객체지향스럽게 사용하는 방법을 제공
데이터베이스에서는 외래키를 사용하지만, JPA에서는 객체를 참조하는 방식으로 연관 관계를 매핑함
@OneToOne: 하나의 엔티티가 하나의 엔티티와 연관 관계를 맺을 때 사용
@OneToMany: 하나의 엔티티가 여러 개의 엔티티와 연관 관계를 맺을 때 사용
@ManyToOne: 여러 개의 엔티티가 하나의 엔티티와 연관 관계를 맺을 때 사용
@ManyToMany: 여러 개의 엔티티가 여러 개의 엔티티와 연관 관계를 맺을 때 사용
@OneToMany(fetch = FetchType.LAZY, mappedBy = "category")
private List<Partner> partners;
@ManyToOne
private Category category;
@Test
컬럼을 찾는데 오류가 발생할 경우 @ManyToOne 선언 부분에 @JoinColumn(name = "user_id")추가
@Test
@Transactional
public void userOrderList(){
Optional<Users> users = usersRepository.findByUserid("sweetPotato");
users.ifPresent(
selectUser -> {
System.out.println(selectUser.getName() + "님의 주문 리스트");
System.out.println("====================================================");
System.out.println("*** 주문 내역 ***");
selectUser.getOrderGroups().stream().forEach(
orderGroup -> {
System.out.println("수령인: " + orderGroup.getRevName());
System.out.println("수령지: " + orderGroup.getRevAddress());
System.out.println("총수량: " + orderGroup.getTotalQuantity());
System.out.println("총금액: " + orderGroup.getTotalPrice());
System.out.println("*** 상세 내역 ***");
orderGroup.getOrderDetails().stream().forEach(
orderDetail -> {
System.out.println("상품명: " + orderDetail.getItem().getName());
System.out.println("주문상태: " + orderDetail.getStatus());
System.out.println("수량: " + orderDetail.getQuantity());
System.out.println("가격: " + orderDetail.getTotalPrice());
System.out.println("팜매처: " + orderDetail.getItem().getPartner().getName());
System.out.println("고객센터 전화번호: " + orderDetail.getItem().getPartner().getCall_Center());
System.out.println("카테고리명: " + orderDetail.getItem().getPartner().getCategory().getTitle());
}
);
}
);
}
);
}