注釈を使用して多対多関係を設定しようとしています。 ここに私のエンティティは、私は、エンティティのために持っているデータのサンプルセットは、ここで ハイバネートマッピングに関する質問
@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冊の本を手に入れています。私はこの本のエンティティ、PublisherBookのリストから設定を削除する場合はブック1(ID = 1)異なる作者値で3回繰り返されている(1、2、3) だから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
私は間違っていることを誰かに教えてもらえますか?長い投稿のための謝罪。