어노테이션을 사용하여 다 대다 관계를 설정하려고합니다. 여기 내 실체 내가 엔티티가 데이터의 샘플 세트는 여기 최대 절전 모드 매핑에 대한 질문
@Entity
public class Publisher{
@Id
public int id;
public String name;
}
@Entity
public class PublisherBook{
@Id
public int id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="bookId",nullable=false)
public Book book;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="publisherId",nullable=false)
public Publisher Publisher;
}
@Entity
public class Book{
@Id
public int id;
public String name;
@OneToMany(fetch=FetchType.EAGER, mappedBy="book")
public Set<BookAuthor> authors;
}
@Entity
public class BookAuthor{
@Id
public int id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="bookId",nullable=false)
public Book book;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="authorId",nullable=false)
public Author author;
}
@Entity
public class Authors{
@Id
public int id;
public String name;
}
가되어 있습니다
Author:(id,name)
1, Author 1
2, Author 2
3, Author 3
Book: (id, name)
1, Book 1
2, Book 2
3, Book 3
Publisher(id,name)
1, Publisher 1
2, Publisher 2
3, Publisher 3
BookAuthor (id, bookId, authorId)
1, 1, 1
2, 1, 2
3, 1, 3
4, 2, 1
5, 3, 2
PublisherBook(id, publisherId, bookId)
1, 1, 1
2, 1, 2
3, 1, 3
4, 2, 1
5, 3, 2
나는 제작사 1 (ID = 1)에 대한 모든 책의 목록을하려고하면에서 PublisherBook 표는 총 3 권을 반환합니다. 하지만 총 5 권의 책이 나옵니다. 1 권 (ID = 1) 다른 저자 값으로 3 번 반복되고있다 (1, 2, 3) 그래서 PublisherBook의 목록은 내가 책 엔티티로부터 PublisherBook의 목록을 설정을 제거하면
1, 1, 1
1, 1, 1
1, 1, 1
2, 1, 2
3, 1, 3
을 반환 1 개 반환 올바른 값
게시자1, 1, 1
2, 1, 2
3, 1, 3
누군가가 내가 뭘 잘못 말해 줄래? 긴 게시물에 대한 사과.