我正在尝试使用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?
我的课程如下:
病人
@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;
我的代码出了什么问题?
答案 0 :(得分:0)
问题在于Patient
课程中Results
的@JoinColumn注释。
您正在使用referencedColumnName
参数。
以下文件:
(可选)此外键引用的列的名称 列。
因此,在这种情况下,这个论点是没有必要的。如果你想使用它应该看起来像referencedColumnName = "idResult"
,但正如我所说,这是没有必要的。