Sangwon Coding
Spring Boot - 연관관계 설정 본문
User.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity // ==table
@ToString(exclude = {"orderGroupList"})
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String account;
private String password;
private String status;
private String email;
private String phoneNumber;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// User : OrderGroup = 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private List<OrderGroup> orderGroupList;
}
Partner.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@ToString(exclude = {"itemList", "category"})
public class Partner {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String status;
private String address;
private String callCenter;
private String partnerNumber;
private String businessNumber;
private String ceoName;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// Partner : Category = N : 1
@ManyToOne
private Category category;
// Partner : Item = 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "partner")
private List<Item> itemList;
}
OrderGroup.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@ToString(exclude = {"user", "orderDetailList"})
public class OrderGroup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String status;
private String orderType;
private String revAddress;
private String revName;
private String paymentType;
private BigDecimal totalPrice;
private Integer totalQuantity;
private LocalDateTime orderAt;
private LocalDateTime arrivalDate;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// OrderGroup : User = N : 1
@ManyToOne
private User user;
// OrderGroup : OrderDetail = 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "orderGroup")
private List<OrderDetail> orderDetailList;
}
OrderDetail.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity // order_detail
@ToString(exclude = {"orderGroup", "item"})
public class OrderDetail {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String status;
private LocalDateTime arrivalDate;
private Integer quantity;
private BigDecimal totalPrice;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// OrderDetail : Item = N : 1
@ManyToOne
private Item item;
// OrderDetail : OrderGroup = N : 1
@ManyToOne
private OrderGroup orderGroup;
}
Item.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@ToString(exclude = {"orderDetailList", "partner"})
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String status;
private String name;
private String title;
private String content;
private Integer price;
private String brandName;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// Item : Partner = N : 1
@ManyToOne
private Partner partner;
// Item : OrderDetail = 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "item")
private List<OrderDetail> orderDetailList;
}
Category.java
package com.example.study.model.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@ToString(exclude = {"partnerList"})
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String type;
private String title;
private LocalDateTime createdAt;
private String createdBy;
private LocalDateTime updatedAt;
private String updatedBy;
// Category : Partner = 1 : N
@OneToMany(fetch = FetchType.LAZY, mappedBy = "category")
private List<Partner> partnerList;
}
UserRepositoryTest.java 일부
@Test
@Transactional
public void read() {
User user = userRepository.findFirstByPhoneNumberOrderByIdDesc("010-1111-2222");
if (user != null) {
user.getOrderGroupList().stream().forEach(orderGroup -> {
System.out.println("---------- 주문묶음------------");
System.out.println("수령인 : " + orderGroup.getRevName());
System.out.println("수령지 : " + orderGroup.getRevAddress());
System.out.println("총금액 : " + orderGroup.getTotalPrice());
System.out.println("총수량 : " + orderGroup.getTotalQuantity());
System.out.println("---------- 주문상세------------");
orderGroup.getOrderDetailList().forEach(orderDetail -> {
System.out.println("파트너사 이름 : " + orderDetail.getItem().getPartner().getName());
System.out.println("파트너사 카테고리 : " + orderDetail.getItem().getPartner().getCategory().getTitle());
System.out.println("주문 상품 : " + orderDetail.getItem().getName());
System.out.println("고객센터 번호 : " + orderDetail.getItem().getPartner().getCallCenter());
System.out.println("주문의 상태 : " + orderDetail.getStatus());
System.out.println("도착예정일자 : " + orderDetail.getArrivalDate());
});
});
}
Assert.assertNotNull(user);
}
'Spring > Spring Boot (어드민 페이지)' 카테고리의 다른 글
Spring Boot - CRUD 인터페이스 정의와 ResponseBody 공통부 작성 (0) | 2019.12.23 |
---|---|
Spring Boot - JPA의 추가기능 (Builder, Chain) (0) | 2019.12.06 |
Spring Boot - 테이블 테스트 (0) | 2019.12.02 |
Spring Boot - Entity 및 Repository 설정 (0) | 2019.12.02 |
Spring Boot - 어드민 프로젝트를 위한 ERD 설계 (0) | 2019.11.22 |
Comments