Hibernate ManyToMany关系

时间:2015-10-24 08:32:57

标签: hibernate repository many-to-many dao

我有2个具有ManyToMany关系的实体。

public class Book implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long bookId;
private String name;
private String author;
private int year;

和另一个

public class Package implements Serializable{
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private long packId;
private String student;
@ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@JoinTable(name = "package_book",
        joinColumns = { @JoinColumn(name = "packid") },
        inverseJoinColumns = { @JoinColumn(name = "bookid") })
private List<Book> books;

并且我在尝试使用列表中的Books保存Package对象时遇到问题。我看到sql只用于将行插入包表,而不是用于package_book表,用于manytomany关系。我正在尝试下一个代码

        Session session = sf.openSession();

    Book book1 = new Book(1, "THE SURVIVOR", "Vince Flynn and Kyle Mills", 1954);
    Book book2 = new Book(2, "THE MARTIAN", "Andy Weir", 1987);
    Book book3 = new Book(3, "A KNIGHT OF THE SEVEN KINGDOMS", "George R. R. Martin", 1973);
    Book book4 = new Book(4, "THE MURDER HOUSE", "James Patterson and David Ellis", 1925);
    Book book5 = new Book(5, "SHADOWS OF SELF", "Brandon Sanderson", 1984);
    Book book6 = new Book(6, "KILLING REAGAN", "Bill O'Reilly and Martin Dugard", 1936);
    Book book7 = new Book(7, "A MORE PERFECT UNION", "Ben Carson with Candy Carson", 1928);
    Book book8 = new Book(8, "A COMMON STRUGGLE", "Patrick J. Kennedy and Stephen Fried", 1956);
    Book book9 = new Book(9, "M TRAIN", "Patti Smith", 1965);
    Book book10 = new Book(10, "ROSEMARY", "Kate Clifford Larson", 1923);

    session.save(book1);
    session.save(book2);
    session.save(book3);
    session.save(book4);
    session.save(book5);
    session.save(book6);
    session.save(book7);
    session.save(book8);
    session.save(book9);
    session.save(book10);

    session.save(new Package(1, "Roman", new ArrayList<>(Arrays.asList(new Book[]{ book4, book7, book8 }))));
    session.save(new Package(2, "John", Arrays.asList(new Book[]{ book1, book9, book6, book5 })));
    session.save(new Package(3, "Shaun", Arrays.asList(new Book[]{ book6, book7 })));
    session.save(new Package(4, "Samuel", Arrays.asList(new Book[]{ book2, book3 })));
    session.save(new Package(5, "Paul", Arrays.asList(new Book[]{ book10 })));

书籍和包裹表格已经填好了,但正如我所说对关系表没有影响。

0 个答案:

没有答案
相关问题