@JoinColumn name=cid是什么意思?

来源:3-9 Hibernate关联映射注解之一对多双向外键关联

慕娘9557946

2017-09-13 15:44

//一对多 双向关联
Student.java:
@ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.EAGER)
@JoinColumn(name = "cid")    ///  ????
 private ClassRoom classRoom;
 
 ClassRoom.java
@Id
@GeneratedValue(generator = "cid")
@GenericGenerator(name = "cid",strategy = "assigned")
@Column(length = 4)
private String cid; 
private String cname; 
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name = "cid")  ///  ???
private Set<Student> stus;

请问cid指的是什么  ???  这个cid指的是 生成的外键字段的名词 吗? 

有没有要求必须要与主键cid属性同名?如果没有要求的换个其他比较好, 都叫cid这样会有歧义.

还有双向关联双方实体类 @JoinColumn name="xxx"   是都需要写一样吗?

写回答 关注

2回答

  • MartinCode
    2018-02-24 16:07:24
    已采纳

    @JoinColumn(name="rid", referencedColumnName="cid")     //name=定义外键在本表的字段名 referencedColumnName =关联外键对象的哪个字段


    慕娘9557...

    非常感谢!

    2018-03-03 16:31:32

    共 1 条回复 >

  • 慕娘9557946
    2017-09-13 15:48:29

    提问居然乱码了


    ClassRoom :

       @Id
       @GeneratedValue(generator = "cid")
       @GenericGenerator(name = "cid",strategy = "assigned")
       @Column(length = 4)
       private String cid; 
       private String cname; 

       @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
       @JoinColumn(name = "cid")
       private Set<Student> stus;


    Student :

       @Id
       @GeneratedValue 
       private int sid;

       @Column(length = 25)
       private String sname;
       private String gender;
       private Date birthday;
       private String major;

      @ManyToOne(cascade = {CascadeType.ALL},fetch = FetchType.EAGER)
      @JoinColumn(name = "cid")
       private ClassRoom classRoom;

Hibernate注解

轻松学习Hibernate常用注解,学完本课能够灵活应用

37179 学习 · 87 问题

查看课程