首页 > 解决方案 > 使用 IntelliJ IDEA 遇到 JPA 多对多关系构建时间错误

问题描述

我对这个主题很陌生,所以我遵循了一个教程。执行以下步骤后,我遇到了一些构建时间错误。

我已经像这样导入了 javax 持久性。

import javax.persistence.*;

然后是学生模型班

@Entity
@Table(name="STUDENT")
public class Student {
    @Id
    @GeneratedValue
    private Integer studentId;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(name="Enrollment", joinColumns = {@JoinColumns(name="student_id")},
    inverseJoinColumns = {@JoinColumns(name="course_id")})
    private List<Course> courses = new ArrayList<>();
}

课程模型类。

@Entity
@Table(name="COURSE")
public class Course {
    @GeneratedValue
    private Integer id;

    @ManyToMany(mappedBy ="courses")
    private List<Student> students = new ArrayList<>();

这些是我遇到的一组错误

不兼容的类型:javax.persistence.JoinColumns 无法转换为 javax.persistence.JoinColumn

找不到符号符号:方法名称()位置:@interface javax.persistence.JoinColumns

注释 @javax.persistence.JoinColumns 缺少元素“值”的默认值

谁能帮我摆脱这个问题?谢谢。

标签: spring-bootjpaspring-data-jpaspring-data

解决方案


@JoinTable注释确实有一个joinColumns参数,但是您使用的语法不正确。如果表仅由列和反列连接,则不应使用@JoinColumns注释。您必须通过以下方式更改它:

@Entity
@Table(name="STUDENT")
public class Student {
    @Id
    @GeneratedValue
    private Integer studentId;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(
      name="Enrollment", 
      joinColumns = @JoinColumn(name="student_id", referencedColumnName = "id"),
      inverseJoinColumns = @JoinColumn(name="course_id", referencedColumnName = "id"))
    private List<Course> courses = new ArrayList<>();
}

并且仅当加入超过一列时,您必须执行以下操作:

@Entity
@Table(name="STUDENT")
public class Student {
    @Id
    @GeneratedValue
    private Integer studentId;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinTable(
      name="Enrollment", 
      joinColumns = @JoinColumns{
        @JoinColumn(name="student_id", referencedColumnName = "id"),
        @JoinColumn(name="another_id", referencedColumnName = "another_id")
      },
      inverseJoinColumns = @JoinColumn(name="course_id", referencedColumnName = "id"))
    private List<Course> courses = new ArrayList<>();
}

希望它会有所帮助


推荐阅读