作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在出版物和作者之间创建一对多关系,但是由于某种原因,当我保留出版物时,作者会被保留,但联接表为空。
发布.java
@Id
@Column(name="PUBLICATIONID")
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "authorspublication", fetch = FetchType.EAGER)
private Collection<Author> authors;
作者.java
@Id
@Column(name = "AUTHORID")
private String authorid;
@ManyToOne(optional = false, targetEntity = Publication.class)
@JoinColumn(name = "authorspublication", referencedColumnName = "publicationid")
private Publication authorspublication;
DataParser.java
//pub is created - non managed
//author is created - non managed
author.setPublication(pub);
pub.getAuthors().add(author);
em.merge(pub);
我不知道是球队落后了,还是别的原因。
如有任何见解,我们将不胜感激。
最佳答案
您正在使用@JoinColumn
,这表明您正在作者表中使用FK列将出版物链接到其作者。
如果您想使用连接表,则需要删除它并使用@JoinTable
注释。然而,在我看来,你的映射方式是错误的。从作者到出版物的关系肯定是 OneToMany 吗?就此而言,一个作者肯定可以拥有许多出版物,而一个出版物可以有多个作者吗?
对于发布的场景,它应该是这样的:
public class Publication{
@Id
@Column(name="PUBLICATIONID")
private String id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "publications", fetch = FetchType.EAGER)
private Collection<Author> authors;
}
public class Author{
@Id
@Column(name = "AUTHORID")
private String id;
@ManyToOne
@JoinTable(name = "author_publications", joinColumn = @JoinColumn(name = "AUTHORID"), inverseJoinColumn = @JoinColumn(name = "PUBLICATIONID"))
private Publication publications;
}
但是,您可能希望将“作者”中的“出版物”字段更改为“出版物集合”,并将 @OnetoMany
替换为 @ManyToMany
关于java - JPA2 一对多空联接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638337/
我是一名优秀的程序员,十分优秀!