spring-boot - 使用 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 缺少元素“值”的默认值
谁能帮我摆脱这个问题?谢谢。
解决方案
@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<>();
}
希望它会有所帮助
推荐阅读
- oauth - 通过 nodemailer 中的 gmail oauth 发送电子邮件需要哪个范围?
- android - 预选赛屏幕尺寸小不适用于尺寸
- azure - 使用 Metrics Explorer 进行 Web 应用监视的 Azure CPU 指标百分比
- asp.net - Visual Studio 2019 IntelliSense 错误 - 误报 - 当前上下文中不存在
- .net-core - 如何在EF核心中设置我的主键的外键
- c# - WPF Datagrid没有收到递增值
- c# - C# 使用 2 个线程将数组值增加 1?
- django - AWS CodeStar/Pipeline 和 Python (Django/Flask) 的建议
- linux - 使用 F# 替代 Linux shell 脚本
- regex - 使用 PowerShell 从记事本中提取日期和时间戳