gpt4 book ai didi

Java持久化: @ManyToMany Project to List

转载 作者:行者123 更新时间:2023-12-02 09:34:57 27 4
gpt4 key购买 nike

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

场景:Java 类Project 包含子项目,它只是ProjectsList。没有反向(没有 super 项目)成员。所以我认为多对多关系对于这个来说是完美的

@ManyToMany(fetch = FetchType.EAGER, targetEntity = ProjectEntity.class, mappedBy = "project")    
@Override
public List<ProjectImpl> getSubProjects() {
return super.getSubProjects();
}

问题1:这是持久保存具有子项目列表的项目的正确方法吗?

Q2:此外,我当前收到错误:mappedby 引用未知的目标属性。我发现这个高度评价的错误线程:mappedBy reference an unknown target entity property但是我这里没有一对多/多对一逆或两个不同的类

编辑:根据反馈,我将关系更改为一对多,并根据 https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association-collections 中的示例添加了 JoinTable 注释。 。但是我收到错误从 de.otsd.worklog.database.ProjectEntity 引用 de.otsd.worklog.database.ProjectEntity 的外键具有错误的列数。应该是 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());
}

最佳答案

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

关于Java持久化: @ManyToMany Project to List<Projects>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com