JPA - 更改 mappedBy 列的名称
JPA - Changing the Name of the mappedBy column
好的,我有一个应用程序可以将学期映射到他们的课程;
public class Course {
private String courseId;
private String courseName;
private Collection<Semester> semesters = new ArrayList<>();
@OneToMany(targetEntity = Semester.class, mappedBy = "course")
public Collection<Semester> getSemesters() {
return semesters;
}
public void setSemesters(Collection<Semester> semesters) {
this.semesters = semesters;
}
@Id
@Column (name = "COURSE_ID")
public String getCourseId() {
return courseId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
@Column(name = "COURSE_NAME", nullable = false, unique = true)
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}
如您所见,用户 class 使用一对多映射映射到学期实体。
学期class如下;
@Entity
@Table (name = "SEMESTERS")
public class Semester {
private int semNum;
private Course course;
@ManyToOne
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@Id
@Column (name = "SEM_NUM")
public int getSemNum() {
return semNum;
}
public void setSemNum(int semNum) {
this.semNum = semNum;
}
}
如您所见,我正在使用 mappedBy
将课程直接映射到学期 table。但问题是 table 学期的字段是 course_COURSE_ID
.
如何将此列名称更改为 COURSE_ID
?
您需要使用 @JoinColumn
注释。
@ManyToOne
@JoinColumn(name="COURSE_ID")
public Course getCourse() {
//code
}
我建议您阅读 documentation,因为其中有很好的解释。如果您不想阅读文档,那么请做好漫长而痛苦的旅程的准备,因为 JPA 不是一项简单的技术,它有很多陷阱。
您可以在 class 学期通过 @JoinColumn
更改此设置。这允许更改默认的 JPA 名称。
应如下所示:
public class Semester {
@ManyToOne
@JoinColumn(name="COURSE_ID")
public Course getCourse() {
return course;
}
}
好的,我有一个应用程序可以将学期映射到他们的课程;
public class Course {
private String courseId;
private String courseName;
private Collection<Semester> semesters = new ArrayList<>();
@OneToMany(targetEntity = Semester.class, mappedBy = "course")
public Collection<Semester> getSemesters() {
return semesters;
}
public void setSemesters(Collection<Semester> semesters) {
this.semesters = semesters;
}
@Id
@Column (name = "COURSE_ID")
public String getCourseId() {
return courseId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
@Column(name = "COURSE_NAME", nullable = false, unique = true)
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
}
如您所见,用户 class 使用一对多映射映射到学期实体。
学期class如下;
@Entity
@Table (name = "SEMESTERS")
public class Semester {
private int semNum;
private Course course;
@ManyToOne
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@Id
@Column (name = "SEM_NUM")
public int getSemNum() {
return semNum;
}
public void setSemNum(int semNum) {
this.semNum = semNum;
}
}
如您所见,我正在使用 mappedBy
将课程直接映射到学期 table。但问题是 table 学期的字段是 course_COURSE_ID
.
如何将此列名称更改为 COURSE_ID
?
您需要使用 @JoinColumn
注释。
@ManyToOne
@JoinColumn(name="COURSE_ID")
public Course getCourse() {
//code
}
我建议您阅读 documentation,因为其中有很好的解释。如果您不想阅读文档,那么请做好漫长而痛苦的旅程的准备,因为 JPA 不是一项简单的技术,它有很多陷阱。
您可以在 class 学期通过 @JoinColumn
更改此设置。这允许更改默认的 JPA 名称。
应如下所示:
public class Semester {
@ManyToOne
@JoinColumn(name="COURSE_ID")
public Course getCourse() {
return course;
}
}