Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以多对一的方式使用Spring数据JPA进行错误关系持久化_Java_Mysql_Spring Boot_Jpa_Spring Data - Fatal编程技术网

Java 以多对一的方式使用Spring数据JPA进行错误关系持久化

Java 以多对一的方式使用Spring数据JPA进行错误关系持久化,java,mysql,spring-boot,jpa,spring-data,Java,Mysql,Spring Boot,Jpa,Spring Data,我有以下使用SpringJPA实现多对多或多对一关系持久化的代码 这是我的存储库测试 这个类有三个一对多的关系,但没有一个工作得很好 @实体(name=“例行任务”) @表(name=“例行任务分配”) 公共类路由分配{ @身份证 @生成值(策略=标识) @列(name=“id”,updateable=false) 私人长id; @列(name=“date\u start”,nullable=true,columnDefinition=“date”) 私有日期开始日期=新日期(); @列(nam

我有以下使用SpringJPA实现多对多或多对一关系持久化的代码

这是我的存储库测试

这个类有三个一对多的关系,但没有一个工作得很好

@实体(name=“例行任务”)
@表(name=“例行任务分配”)
公共类路由分配{
@身份证
@生成值(策略=标识)
@列(name=“id”,updateable=false)
私人长id;
@列(name=“date\u start”,nullable=true,columnDefinition=“date”)
私有日期开始日期=新日期();
@列(name=“date\u end”,nullable=true,columnDefinition=“date”)
私人日期结束日期;
@许多酮
@JoinColumn(name=“id\u user”)
私人用户;
@许多酮
@JoinColumn(name=“id\u例程”)
私人例行程序;
@OneToMany(mappedBy=“例行任务”)
私有集分数=新HashSet();
@OneToMany(mappedBy=“例行任务”)
private Set statistics=new HashSet();
@OneToMany(mappedBy=“例行任务”)
私有集keepRoutines=newhashset();
其他班级

@实体(name=“score”)
@表(name=“score”)
公开课成绩{
@身份证
@生成值(策略=标识)
@列(name=“id”,updateable=false)
私人长id;
@列(name=“commentation”,nullable=false,columnDefinition=“TEXT”,unique=true)
私人评论;
@列(name=“assessment”,nullable=false,columnDefinition=“INT”,unique=true)
私人字符串评估;
@许多酮
@JoinColumn(name=“id\u例程\u分配”)
私人航线分配;
}
@实体(name=“statistic”)
@表(name=“statistic”)
公共类统计{
@身份证
@生成值(策略=标识)
@列(name=“id”,updateable=false)
私人长id;
@列(name=“time”,nullable=false,columnDefinition=“TEXT”,unique=true)
私有字符串时间;
@许多酮
@JoinColumn(name=“id\u例程\u分配”)
私人航线分配;
}

@Entity(name=“keep_例程”)
@表(name=“keep_例程”)
公共类保留例程{
@身份证
@生成值(策略=标识)
@列(name=“id”,updateable=false)
私人长id;
@许多酮
@JoinColumn(name=“id\u例程\u分配”)
私人航线分配;
}
实体关系图如下所示:

我的错误是它没有正确地检测这些关系

当我运行它时,它会生成以下内容:

Failed to initialize JPA EntityManagerFactory: mappedBy reference an unknown target entity property: com.example.demo.model.entities.KeepRoutine.routine_assignament in com.example.demo.model.entities.RoutineAssignament.keepRoutines

这一错误在所有三个类别(KeepRoutine、Statistic和Score)中都会重现,我不知道为什么您的
OneToMany
映射不合适。您需要使用
routinesignament
属性名,而不是表名
routine\u assignament
,如下所示。此属性名在
ManyToOne
关系中定义

    @OneToMany(mappedBy = "routineAssignament")
    private Set<Score> scores = new HashSet<>();

    @OneToMany(mappedBy = "routineAssignament")
    private Set<Statistic> statistics = new HashSet<>();

    @OneToMany(mappedBy = "routineAssignament")
    private Set<KeepRoutine> keepRoutines = new HashSet<>();
@OneToMany(mappedBy=“routinesassignment”)
私有集分数=新HashSet();
@OneToMany(mappedBy=“routinesignament”)
private Set statistics=new HashSet();
@OneToMany(mappedBy=“routinesignament”)
私有集keepRoutines=newhashset();