gpt4 book ai didi

mysql - 持久异常 : when using @OneToMany

转载 作者:行者123 更新时间:2023-11-30 01:22:44 24 4
gpt4 key购买 nike

我正在尝试使用 play 框架使用 JPA 和 MYSQL 创建数据库,但在映射 @oneToMany 时出现以下错误

    PersistenceException: Error with the Join on [models.Patient.progress].
Could not find the matching foreign key for [id] in table[Results]?
Perhaps using a @JoinColumn with the name/referencedColumnName attributes swapped?

我的类(class)如下所示:

病人

@Entity
@Table(name = "Patients")
public class Patient
extends User {


@Id
@Column(name = "idPatient")
private int idPatient;
@Constraints.Required
private String medicalCoverage;
@Constraints.Required
private String disease;
@Constraints.Required
private int gradeDisease;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "patient",
fetch = FetchType.LAZY)
private List<Results> progress;
@ManyToMany
@JoinTable(name = "therapist_relation",
joinColumns = {@JoinColumn(name = "idPatient")},
inverseJoinColumns = {@JoinColumn(name = "idTherapist")})
private List<Therapist> therapists;
private int qAwardA;
private int qAwardB;
private int qAwardC;

结果

 @Entity
@Table(name = "Results")
public class Results {

@Id
@Column(name = "idResult")
private int idResult;
private Game game;
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name="idPatient", referencedColumnName = "idPatient", nullable = false)
private Patient patient;

@OneToMany
@JoinColumn(name="idTherapist", referencedColumnName = "idResult")
private Therapist therapist;
private int punctuation;
private String description;

我的代码有什么问题吗?

最佳答案

问题出在 Results 类中 Patient 的 @JoinColumn 注释。

您正在使用referencedColumnName参数。

以下文档:

(Optional) The name of the column referenced by this foreign key column.

因此,在这种情况下,这个参数是没有必要的。如果您想使用它,它应该类似于 referencedColumnName = "idResult" 但正如我所说,这不是必需的。

关于mysql - 持久异常 : when using @OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370827/

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