Java 如何在Hibernate中映射多个一对多关联

Java 如何在Hibernate中映射多个一对多关联,java,hibernate,annotations,one-to-many,Java,Hibernate,Annotations,One To Many,我的数据库中有这3个表 CREATE TABLE IF NOT EXISTS`User`( `id`INT非空自动增量, `名称“VARCHAR(255)非空默认值”, 主键(`id`) ) 如果不存在“项目”,则创建表( `id`INT非空自动增量, `manager`INT不为空, `名称“VARCHAR(255)非空默认值”, 主键(`id`), 外键(`manager`)引用`User`(`id`) ) 创建表(如果不存在)`Work`( `id`INT非空自动增量, `项目_id`IN

我的数据库中有这3个表

CREATE TABLE IF NOT EXISTS`User`(
`id`INT非空自动增量,
`名称“VARCHAR(255)非空默认值”,
主键(`id`)
)
如果不存在“项目”,则创建表(
`id`INT非空自动增量,
`manager`INT不为空,
`名称“VARCHAR(255)非空默认值”,
主键(`id`),
外键(`manager`)引用`User`(`id`)
)
创建表(如果不存在)`Work`(
`id`INT非空自动增量,
`项目_id`INT不为空默认值-1,
`名称“VARCHAR(255)非空默认值”,
主键(`id`),
外键(`project_id`)引用`project`(`id`),
外键(`creator`)引用`User`(`id`)
)
然后我想用Hibernate连接它们

这些是我的java类

用户:

工作:

现在它可以工作了

然而,在映射项目和工作(一对多/多对一)的关系后,它会给我错误消息

我所做的映射是:

将以下代码添加到项目类中:

@OneToMany(mappedBy = "project_id")
private List<Work> works;

public List<Work> getWorks() {
    return works;
}

public void setWorks(List<Work> works) {
    this.works = works;
}
并删除
@Column(name=“project\u id”)私有int projectId

然后它会给我错误信息:

Exception in thread "main" org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: database.tables.Work.project_id in database.tables.Project.works
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:768)
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:728)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:70)
    at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1697)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1426)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)

因此,我想知道如何映射项目工作之间的关系

在“项目”类中,代码是:

@OneToMany(mappedBy = "project_id")
private List<Work> works;

('mappedBy=“project\u id”)中的名称和其他类(private project project)中的变量名称都应该匹配。

在“project”类中,代码是:

@OneToMany(mappedBy = "project_id")
private List<Work> works;

('mappedBy=“project\u id”)中的名称和其他类(private project project)中的变量名称都应该匹配。

在“project”类中,代码是:

@OneToMany(mappedBy = "project_id")
private List<Work> works;

('mappedBy=“project\u id”)中的名称和其他类(private project project)中的变量名称都应该匹配。

在“project”类中,代码是:

@OneToMany(mappedBy = "project_id")
private List<Work> works;

('mappedBy=“project\u id”)中的名称和另一个类(private project)中的变量名称两者应该匹配。

这可能对你有帮助:这也可能对你有帮助:免责声明:我写的这可能对你有帮助:免责声明:我写的这可能对你有帮助:免责声明:我写的这可能对你有帮助:免责声明:我写的谢谢,它很管用。但是,该变量是Project class(称为Project\u id非常奇怪),因此我更改了
@OneToMany(mappedBy=“Project\u id”)私有列表的工作方式
@OneToMany(mappedBy=“project”)私人清单工程。谢谢,它可以工作。但是,该变量是Project class(称为Project\u id非常奇怪),因此我更改了
@OneToMany(mappedBy=“Project\u id”)私有列表的工作方式
@OneToMany(mappedBy=“project”)私人清单工程。谢谢,它可以工作。但是,该变量是Project class(称为Project\u id非常奇怪),因此我更改了
@OneToMany(mappedBy=“Project\u id”)私有列表的工作方式
@OneToMany(mappedBy=“project”)私人清单工程。谢谢,它可以工作。但是,该变量是Project class(称为Project\u id非常奇怪),因此我更改了
@OneToMany(mappedBy=“Project\u id”)私有列表的工作方式
@OneToMany(mappedBy=“project”)私人清单工程
@OneToMany(mappedBy = "project_id")
private List<Work> works;
@ManyToOne
@JoinColumn(name = "project_id")
private Project project;   
//var name should match with mappedBy name in other class