首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Persistence:@ManyToMany项目到List<Projects>

Java Persistence:@ManyToMany项目到List<Projects>
EN

Stack Overflow用户
提问于 2019-08-22 12:59:27
回答 1查看 54关注 0票数 0

第一次尝试使用Java持久性注释创建多对多关系。

场景: Java类Project包含子项目,子项目只是Projects的一个List。没有逆向(没有超级项目)成员。所以我认为多对多关系非常适合这一点。

代码语言:javascript
复制
@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)

代码语言:javascript
复制
@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());
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-22 15:26:55

我猜你根本不需要mappedby,因为它不是双向的。您可能应该指定用于多对多的链接表(除非将其更改为一对多)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57602307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档