PersistenceException:使用@OneToMany时

时间:2013-08-22 02:40:20

标签: mysql hibernate jpa playframework one-to-many

我正在尝试使用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;

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

问题在于Patient课程中Results的@JoinColumn注释。

您正在使用referencedColumnName参数。

以下文件:

  

(可选)此外键引用的列的名称   列。

因此,在这种情况下,这个论点是没有必要的。如果你想使用它应该看起来像referencedColumnName = "idResult",但正如我所说,这是没有必要的。