我是这个主题的新手,所以我遵循了一个教程。经过以下步骤,我得到了一些构建时间错误。
我已经这样导入了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缺少元素“值”的默认值
有人可以帮我摆脱这个问题吗? 谢谢。
答案 0 :(得分:0)
一个@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<>();
}
希望这会有所帮助