위 ERD를 기준으로 연관관계 설정
연관관계 포스팅은 여기
History는 교차 테이블 역할 수행
package com.mini.library.domain.Book.entity;
import com.mini.library.domain.History.History;
import com.mini.library.domain.Member.entity.Member;
import lombok.*;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString(exclude = {"member","bookHistoryList"})
public class Book {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long bid;
private String bname;
private String author;
private String publisher;
private boolean lend;
@ManyToOne
private Member member;
@OneToMany(mappedBy = "book")
private List<History> bookHistoryList = new ArrayList<>();
}
package com.mini.library.domain.History;
import com.mini.library.domain.Book.entity.Book;
import com.mini.library.domain.Library.entity.Library;
import com.mini.library.global.auditable.Auditable;
import lombok.*;
import javax.persistence.*;
@Entity
@Getter
@ToString(exclude = {"book","library"})
public class History extends Auditable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long hid;
@ManyToOne
@JoinColumn(name = "BOOK_ID")
private Book book;
@ManyToOne
@JoinColumn(name = "LIBRARY_ID")
private Library library;
}
package com.mini.library.domain.Library.entity;
import com.mini.library.domain.History.History;
import lombok.*;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@ToString(exclude = "libraryHistoryList")
public class Library {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long lid;
private String lname;
@OneToMany(mappedBy="library")
private List<History> libraryHistoryList = new ArrayList<>();
}
package com.mini.library.domain.Member.entity;
import lombok.*;
import javax.persistence.*;
@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class Member {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private long mid;
@Column
private String mname;
@Column(unique = true)
private String phone;
@Column
private String password;
}