HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 타일러팀
[New] 타일러팀
/
코코아 헤어샵
코코아 헤어샵
/
👥
Reservation 분업
/
📄
Reservation.java
📄

Reservation.java

package com.prgms.kokoahairshop.reservation.entity; import com.prgms.kokoahairshop.hairshop.entity.Hairshop; import java.time.LocalDate; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import javax.validation.constraints.PositiveOrZero; import javax.validation.constraints.Size; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Entity @Table(name = "reservation") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Reservation { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @NotBlank(message = "이름을 입력해주세요.") @Size(max = 20, message = "이름을 20자 이하로 작성해주세요.") @Column(name = "name", nullable = false, length = 20) String name; @NotBlank(message = "휴대폰 번호를 입력해주세요.") @Size(max = 20, message = "휴대폰 번호를 20자 이하로 작성해주세요.") @Pattern(regexp = "^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$", message = "올바르지 않은 휴대폰 번호입니다.") @Column(name = "phoneNumber", nullable = false, length = 20) String phoneNumber; @NotNull(message = "날짜를 입력해주세요.") @Column(name = "date", nullable = false) LocalDate date; @NotNull(message = "시간을 입력해주세요.") @Size(max = 5, message = "시간을 HH:mm으로 입력해주세요.") @Pattern(regexp = "^([01][0-9]|2[0-3]):([0-5][0-9])$", message = "시간을 HH:mm으로 입력해주세요.") @Column(name = "time", nullable = false, columnDefinition = "char(5)") String time; @Enumerated(EnumType.STRING) ReservationStatus status; @Column(name = "request", length = 100) @Size(min = 10, max = 100, message = "요청사항은 10자 이상 100로 입력해주세요.") String request; @PositiveOrZero(message = "결제 금액은 양수와 0만 가능합니다.") @Column(name = "payment_amount", nullable = false) int paymentAmount; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "hairshop_id", referencedColumnName = "id") Hairshop hairshop; // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "user_id", referencedColumnName = "id") // User user; // // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "menug_id", referencedColumnName = "id") // Menu menu; // // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "designer_id", referencedColumnName = "id") // Designer designer; // @Builder public Reservation(Long id, String name, String phoneNumber, LocalDate date, String time, ReservationStatus status, String request, int paymentAmount, Hairshop hairshop // User user, Menu menu, Designer designer ) { this.id = id; this.name = name; this.phoneNumber = phoneNumber; this.date = date; this.time = time; this.status = status; this.request = request; this.paymentAmount = paymentAmount; this.hairshop = hairshop; // this.user = user; // this.menu = menu; // this.designer = designer; // this.hairshop = hairshop; } public void changeStatus(ReservationStatus status) { this.status = status; } }
  • 정규식 부분 정상 작동하는지 아직 모르겠습니다..!