Я пытаюсь реализовать однонаправленное отношение «многие ко многим» между двумя таблицами следующим образом:
@Entity
@Table(name="Book")
public class Book {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="book_name")
private String bookName;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "book_author",
joinColumns = { @JoinColumn(name = "book_id") },
inverseJoinColumns = { @JoinColumn(name = "author_id") })
private List<Author> bookAuthors;
//getter and setters here
}
Мой авторский класс выглядит следующим образом:
@Entity
@Table(name="Author")
public class Author {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="author_name")
private String authorName;
@Column(name="author_description")
private String authorDesc;
//getter setters here
}
Код для сохранения данныхвыглядит следующим образом (обратите внимание, что я вызываю save для объекта книги, являющегося владельцем объекта):
//create book
Book book1 = new Book();
book1.setBookName("Book1");
//create and set Author info
Author author1 = new Author();
author1.setAuthorName("a1");
author1.setAuthorDesc("a1 description");
Author author2 = new Author();
author2.setAuthorName("a2");
author2.setAuthorDesc("a2 description");
List<Author> authorsList1 = new ArrayList<Author>();
authorsList1.add(author1);
authorsList1.add(author2);
book1.setBookAuthors(authorsList1);
//save book
session.save(book1);
При этом выполняется следующий код гибернации:
Hibernate: insert into Book (book_name, category_id, numOfCopies) values (?, ?, ?)
Hibernate: insert into Author (author_description, author_name) values (?, ?)
Hibernate: insert into Author (author_description, author_name) values (?, ?)
Когда я запрашиваюВ таблицах я вижу данные в таблице Book и Author, но не в таблице соединений, т.е. Book_author.Любая идея, что я мог делать неправильно?
Я сослался на следующий пример: http://websystique.com/hibernate/hibernate-many-to-many-unidirectional-annotation-example/
Я даже попытался изменить код на двунаправленное отображение, добавив книги в мой класс автора следующим образом:
@ManyToMany(mappedBy="bookAuthors")
private List<Book> books;
, но по-прежнему никакие данные не сохраняются в таблицу соединений.
Любая помощь будет высоко ценится!
Заранее спасибо!