【问题标题】:Hibernate and Spring: value of many-to-many not inserted into generated tableHibernate 和 Spring:多对多的值未插入到生成的表中
【发布时间】:2012-11-27 19:40:41
【问题描述】:

我对 Spring 有一些经验,但我对 Hibernate 完全陌生,尤其是与 Spring 结合使用: 我想在两个表(作者、出版物)之间建立多对多关系。表生成了,但是没有插入任何东西……

Author.java 的一部分:

@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "writes", joinColumns = {@JoinColumn(name = "authorId")}, inverseJoinColumns = {@JoinColumn(name = "publicationId")})
private Set<Publication> publications = new HashSet<Publication>();

Publication.java 的一部分:

@ManyToMany(mappedBy = "publications")
private Set<Author> authors = new HashSet<Author>();

有什么我忘记了吗?

谢谢!!!!

编辑

这是应该将所有内容保存到我的数据库的代码:

@RequestMapping(value = PATHELEM + "/insertTest", method = RequestMethod.POST)
public String addAuthor(@ModelAttribute("object") DatabaseObject object,
        BindingResult result) {
    authorService.addAuthor(object.getAuthor());
    publicationService.addPublication(object.getPublication());
    return PATHELEM + "/insertEntryForm";
}

【问题讨论】:

  • 试图保存的代码在哪里?

标签: spring hibernate many-to-many


【解决方案1】:

你错过了两件重要的事情:

  • 将您的实体与会话相关联。如果你只是创建你的对象,hibernate 不知道是否将它们保存到 db。这就是为什么您应该致电 session.save(..) / entityManager.persist(..)(取决于您是否使用 JPA)。
  • 事务 - hibernate 中的每个操作都需要一个事务,因此您必须通过实体管理器/会话启动一个事务

我建议阅读一个教程,它会解释这些基本原则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2013-10-07
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多