wjrmffldrhrl / goldenblock

블록체인교육 프로젝트
1 stars 1 forks source link

다대다구조 구현 예시 #35

Open wjrmffldrhrl opened 4 years ago

wjrmffldrhrl commented 4 years ago

이전 프로젝트에서 사용한 다대다 구조입니다.

https://github.com/kyu9341/TeamHash/tree/master/src/main/java/kr/co/teamhash/domain/entity

Project.java


import lombok.*;
import lombok.extern.slf4j.Slf4j;

import javax.persistence.*;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Slf4j
@Entity
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @AllArgsConstructor @NoArgsConstructor
public class Project {

    @Id @GeneratedValue
    private Long id;

    private String title;

    private String subtitle;

    private String builderNick;

    //프로젝트를 생성한 유저의 id를 넣을 것
    private Long builder;

    private Integer progress = 0;

    @Lob
    @Basic(fetch = FetchType.EAGER)
    private String description;

    @OneToMany(mappedBy = "project")
    private List<ProjectMember> members = new ArrayList<>();

    // @OneToMany(mappedBy = "project", targetEntity=Schedule.class)
    @OneToMany(mappedBy = "project")
    private List<Schedule> schedules = new ArrayList<>();

    private LocalDateTime buildDate;

}

Account.java

import lombok.*;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

@Entity
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @AllArgsConstructor @NoArgsConstructor
public class Account {

    @Id @GeneratedValue
    private Long id;

    @Column(unique = true)
    private String email;

    @Column(unique = true)
    private String nickname;

    private String password;

    private String school;

    private boolean emailVerified;

    private String emailCheckToken;

    private LocalDateTime joinedAt;

    private String introduction;

    private String location;

    @Lob @Basic(fetch = FetchType.EAGER)
    private String profileImage;

    private LocalDateTime emailCheckTokenGeneratedAt;

    @OneToMany(mappedBy = "account")
    private List<ProjectMember> projects = new ArrayList<>();

    @OneToMany(mappedBy = "account")
    private List<Notification> notifications = new ArrayList<>();

}

협업 플랫폼에서의 사용자와 프로젝트입니다.