Hibernate однонаправленный многие ко многим не вставляет в таблицу соединений - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь реализовать однонаправленное отношение «многие ко многим» между двумя таблицами следующим образом:

@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;

, но по-прежнему никакие данные не сохраняются в таблицу соединений.

Любая помощь будет высоко ценится!

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...