第一次尝试使用Java持久性注释创建多对多关系。
场景: Java类Project包含子项目,子项目只是Projects的一个List。没有逆向(没有超级项目)成员。所以我认为多对多关系非常适合这一点。
@ManyToMany(fetch = FetchType.EAGER, targetEntity = ProjectEntity.class, mappedBy = "project")
@Override
public List<ProjectImpl> getSubProjects() {
return super.getSubProjects();
}Q1:这是持久化包含一系列子项目的项目的正确方式吗?
Q2:还有,我现在得到的错误是:mappedby reference an unknown target property。我为这个错误找到了一个评分很高的线程:mappedBy reference an unknown target entity property,但是这里没有一对多/多对一的反转或两个不同的类
编辑:根据反馈,我将关系改为一对多,并根据https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association-collections中的示例添加了JoinTable注释。然而,我得到了错误A Foreign key refering de.otsd.worklog.database.ProjectEntity from de.otsd.worklog.database.ProjectEntity has the wrong number of column. should be 2)
@OneToMany(fetch = FetchType.EAGER, targetEntity = ProjectEntity.class)
@JoinTable(
name = "ProjectToSubproject",
joinColumns = @JoinColumn(name = "project_id"),
inverseJoinColumns = @JoinColumn(name = "subproject_id")
)
@Override
public List<ProjectImpl> getSubProjects() {
return super.getSubProjects();
}
@EmbeddedId
@Override
public ProjectKey getProjectKey() {
return new ProjectKeyEntity(super.getProjectKey());
}发布于 2019-08-22 15:26:55
我猜你根本不需要mappedby,因为它不是双向的。您可能应该指定用于多对多的链接表(除非将其更改为一对多)。
https://stackoverflow.com/questions/57602307
复制相似问题