Order 엔티티


@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString(exclude = "user")
@Builder
@Entity
@Table(name = "`Order`")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int orderNo; // 주문 번호 (PK, 자동증가)

    // 주문자 (User)와의 다대일 관계
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "uid", nullable = false)
    private User user;

    // 주문 상세 항목 리스트 (OrderItem)과의 일대다 관계
    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<OrderItem> orderItems;

    private int orderTotalPrice;      // 총 주문 금액
    private String receiverZip;       // 우편번호
    private String orderAddr;         // 배송 주소

    @CreationTimestamp
    private LocalDateTime orderDate;  // 주문 일자 (자동 기록)

    private String orderSender;       // 보내는 사람 이름
    private String senderHp;          // 보내는 사람 연락처
    private String orderReceiver;     // 받는 사람 이름
    private String receiverHp;        // 받는 사람 연락처

    @Lob
    private String orderContent;      // 배송 요청사항 (Lob: 길이 제한 없는 텍스트)

    private String payment;           // 결제 수단 (예: "카카오페이", "신용카드" 등)
    private String paymentContent;    // 결제 상세 정보 (예: 카드 번호)

    private int totalQuantity;        // 총 주문 수량 (모든 OrderItem 합계)
    private int originalTotalPrice;   // 할인 전 총 상품금액
    private int shippingFee;          // 합산 배송비
    private int totalDiscount;        // 총 할인액 (상품 할인 합계)
    private int pointDiscount;        // 사용한 포인트
    private int couponDiscount;       // 쿠폰 할인액
    private int totalPoint;           // 적립 예정 포인트
}

설명