使用@OneToMany映射时,额外列将进入数据库

时间:2015-12-30 05:39:14

标签: hibernate one-to-many one-to-one javax.persistence

enter image description here我创建了三个表实体,学生,学院和地址。当我尝试将数据插入地址表时,我只在数据库中的地址表中获得一个额外的列(student_STUDENT_ID)。请查找附带的截图。我无法弄清楚为什么这个领域即将到来?可以删除吗?下面是映射这三个实体的代码。

地址表 -

@ManyToOne
private Student student;
//setters and getters 

学生表 -

@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @JoinColumn(name="COLLEGE_ID")
    private College college;
     //getters and setters 

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name="STUDENT_ID")
    private Set<Address> addr;
    //getters and setters 

学院表 -

@OneToOne(mappedBy="college",cascade=CascadeType.ALL)
    private Student student;

2 个答案:

答案 0 :(得分:1)

尝试将@JoinColumn移动到地址类

@ManyToOne
@JoinColumn(name = "STUDENT_ID")
private Student student;

然后在您的学生表中,将mappedBy添加到@OneToMany

@OneToMany(cascade=CascadeType.ALL, mappedBy="student")
private Set<Address> addr;

答案 1 :(得分:0)

真正的配置应该是这样的 -

地址类 -

  @ManyToOne
        @JoinColumn(name="STUDENT_ID")
        private Student student;
//getters and setters 

学生班 -

@OneToMany(cascade=CascadeType.ALL, mappedBy="student")
            private Set<Address> addr;
      //getters and setters

大学班没有变化。