JPA 양방향 연관관계

정리공간·2021년 7월 26일
0

연관관계의 주인은 외래키가 있는 곳이며 주인이 아닌 곳에 mapped by 로 외래키를 지정해줌

주인이 아닌 곳에서 관계를 맺어주면 키에 null이 들어감

@Entity
@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(name = "NAME_AGE_UNIQUE", columnNames = {"MEMBER_ID"})})
@Getter @Setter
public class Member {
    @Id
    @Column(name = "MEMBER_ID")
    private String id;
    private String username;
    @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;

    public Member(String member1, String username) {
        this.id = member1;
        this.username = username;
    }
    public Member(){}
}
@Entity
@Getter @Setter
public class Team {
    @Id
    @Column(name = "TEAM_ID")
    private String id;
    private String name;

    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<>();

    public Team(String id, String name) {
        this.id = id;
        this.name = name;
    }
    public void addMember(Member member) {
        
    }
    public Team(){}
}

team.getMembers().add(member); 하게 되면 null이 들어가게 됨.
이럴땐 연관관계의 주인인 member에서 관계를 설정하거나 아래와 같이 team의 메소드를 추가해준 후 사용

    public void addMember(Member member) {
    	member.setTeam(this);
        getMembers().add(member);
    }

0개의 댓글