Event
- EventType (enum)
- Study
- Account createdBy
- String title
- @Lob String description
- int limitOfEnrollments
- List<Enrollment> enrollments
- Event에서 Study 쪽으로 @ManyToOne 단방향 관계
- Event와 Enrollment는 @OneToMany @ManyToOne 양방향 관계
- Event는 Account 쪽으로 @ManyToOne 단방향 관계
- Enrollment는 Account 쪽으로 @ManyToOne 단방향 관계
모임에 해당하는 Event 엔티티 생성
package me.weekbelt.studyolle.domain;
@NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Event {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Study study;
@ManyToOne
private Account createdBy;
@Column(nullable = false)
private String title;
@Lob
private String description;
@Column(nullable = false)
private LocalDateTime createdDateTime;
@Column(nullable = false)
private LocalDateTime endEnrollmentDateTime;
@Column(nullable = false)
private LocalDateTime startDateTime;
@Column(nullable = false)
private LocalDateTime endDateTime;
@Column
private Integer limitOfEnrollments;
@OneToMany(mappedBy = "event")
private List<Enrollment> enrollments = new ArrayList<>();
@Enumerated(EnumType.STRING)
private EventType eventType;
}
이벤트 타입으로 먼저 온 사람들이 참여하는 이벤트인 FCFS와 모임 생성자가 따로 관리해서 선발하는 방식인 CONFIRMATIVE타입으로 enum타입으로 생성
package me.weekbelt.studyolle.domain;
public enum EventType {
FCFS, CONFIRMATIVE
}
모임 참가자에 해당하는 Enrollment 엔티티 생성
package me.weekbelt.studyolle.domain;
@Getter @Setter @EqualsAndHashCode(of = "id")
@Entity
public class Enrollment {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Event event;
@ManyToOne
private Account account;
private LocalDateTime enrolledAt;
private boolean accepted;
private boolean attended;
}
참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-JPA-%EC%9B%B9%EC%95%B1#
'스프링과 JPA 기반 웹 어플리케이션 개발 > 5부 모임' 카테고리의 다른 글
64. 모임 목록 조회 (0) | 2020.05.04 |
---|---|
63. 모임 조회 (0) | 2020.05.04 |
62. 모임 만들기 폼 서브밋 (0) | 2020.05.04 |
61. 모임 만들기 (0) | 2020.04.30 |
59. 모임 관리 기능 미리보기 (0) | 2020.04.28 |