ManyToOne-每次插入值时都会生成Alter Table查询

时间:2018-07-29 13:08:01

标签: hibernate many-to-one

这是一个一对多的单向映射。我正在通过
生成表格 hbm2ddl.auto =更新
它工作正常,但是在第一次执行时就产生了问题,即生成表并对其进行更改并添加FK constarints。
但是,对于每个新插入,在第一次执行之后,它会首先生成一个alter table查询。但是应该只在第一次执行时才这样做。

Student.java
----------------

@Entity
@Table(name="STUDENT_DETAILS")
public class Student {
    private int studentId;
    private String name;
    private long mobile;
    private List<Courses> course;

    @Id
    @GenericGenerator(name="gen1",strategy="increment")
    @GeneratedValue(generator="gen1")
    @Column(name="STUDENT_ID")
    @Type(type="int")
    public int getStudentId() {
        return studentId;
    }
    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }
    @Column(name="NAME")
    @Type(type="string")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name="MOBILE")
    @Type(type="long")
    public long getMobile() {
        return mobile;
    }
    public void setMobile(long mobile) {
        this.mobile = mobile;
    }
    @OneToMany(targetEntity=Courses.class,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
    @JoinColumn(name="STUDENT_ID", referencedColumnName="STUDENT_ID")
    public List<Courses> getCourse() {
        return course;
    }
    public void setCourse(List<Courses> course) {
        this.course = course;
    }

}

Courses.java
-----------------

@Entity
@Table(name="COURSE_DETAILS")
public class Courses {
    private int courseId;
    private String courseName;
    private int duration;

    @Id
    @GenericGenerator(name="gen1",strategy="increment")
    @GeneratedValue(generator="gen1")
    @Column(name="COURSE_ID")
    @Type(type="int")
    public int getCourseId() {
        return courseId;
    }
    public void setCourseId(int courseId) {
        this.courseId = courseId;
    }
    @Column(name="COURSE_NAME")
    @Type(type="string")
    public String getCourseName() {
        return courseName;
    }
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
    @Column(name="DURATION")
    @Type(type="int")
    public int getDuration() {
        return duration;
    }
    public void setDuration(int duration) {
        this.duration = duration;
    }

}

stcktrace
--------------

alter table COURSE_DETAILS 
       add constraint FK1qwr6ohlw0477rlta2pn915g7 
       foreign key (STUDENT_ID) 
       references STUDENT_DETAILS (STUDENT_ID)

每次执行新的插入操作时,都会生成上述查询。
我是否错过了导致以下问题的东西? 会导致性能问题吗?

0 个答案:

没有答案