簡體   English   中英

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;
    }
}

如您所見,使用一對多映射將users類映射到Semesters實體。

學期課程如下:

@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將課程直接映射到學期表中。 但是問題在於,學期表中的字段為course_COURSE_ID

如何將此列名更改為COURSE_ID

您需要使用@JoinColumn批注。

@ManyToOne
@JoinColumn(name="COURSE_ID")
public Course getCourse() { 
   //code
}

我建議您閱讀文檔,因為其中對此進行了很好的解釋。 如果您不想閱讀這些文檔,那么就准備好漫長而痛苦的旅程,因為JPA不是一項簡單的技術,它具有許多陷阱。

您可以通過Semester類中的@JoinColumn進行更改。 這允許更改默認的JPA名稱。 應該看起來像這樣:

public class Semester {

    @ManyToOne
    @JoinColumn(name="COURSE_ID")
    public Course getCourse() {
        return course;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM