Hibernate学习手记(5)--关联映射

关于Hibernate的关联映射(annotation专版)

举一典型到老掉牙的例子说明:TeacherStudentCourse之间的关系。

Teacher与Course是一对一关系;

Student与Course是一对多关系;

Teacher与Student是多对多关系;

....................

@Entity

@Table(name="Student")

publicclassStudent{

privateintid;

privateStringname;

privateStringsex;

privateCoursecourse;

privateSet<Teacher>teachers=newHashSet<Teacher>();

//建立Student与Teacher的双向多对多关联

@ManyToMany(mappedBy="students")

publicSet<Teacher>getTeachers(){

returnteachers;

}

publicvoidsetTeachers(Set<Teacher>teachers){

this.teachers=teachers;

}

//单向多对一关联

@ManyToOne

publicCoursegetCourse(){

returncourse;

}

publicvoidsetCourse(Coursecourse){

this.course=course;

}

@Id

@Column(name="s_id")

publicintgetId(){

returnid;

}

@Column(name="s_name")

publicStringgetName(){

returnname;

}

@Column(name="s_sex")

publicStringgetSex(){

returnsex;

}

.............

}

..............................................

@Entity

@Table(name="Teacher")

publicclassTeacher{

privateintid;

privateStringname;

privateStringsex;

privateStringtitle;

privateCoursecourse;

privateSet<Student>students=newHashSet<Student>();

//Teacher与Student的单向多对多联系

@ManyToMany

@JoinTable(name="t_s",

joinColumns={@JoinColumn(name="t_id")},

inverseJoinColumns={@JoinColumn(name="s_id")}

)

//设置多对多关系的中间表,其中joinColumns属性里面指向本实体数据表的关联字段,

//inverseJoinColumns属性则指向中间表的另一关联字段对应的数据表的关联字段

publicSet<Student>getStudents(){

returnstudents;

}

publicvoidsetStudents(Set<Student>students){

this.students=students;

}

//Teacher与Course的一对一关联

@OneToOne

@JoinColumn(name="Course_id")

//JoinColumn,指定Course表的外键

publicCoursegetCourse(){

returncourse;

}

publicvoidsetCourse(Coursecourse){

this.course=course;

}

@Id

@Column(name="t_id")

publicintgetId(){

returnid;

}

@Column(name="t_name")

publicStringgetName(){

returnname;

}

@Column(name="t_sex")

publicStringgetSex(){

returnsex;

}

@Column(name="t_title")

publicStringgetTitle(){

returntitle;

}

..................

}

..........................

@Entity

@Table(name="Course")

publicclassCourse{

privateintid;

privateStringname;

privateStringscore;

privateSet<Student>student=newHashSet<Student>();

privateTeacherteacher;

/*

*为实现双向的一对一关联,添加属性mappedBy,使确定该实体被映射在teacher中的course属性上,主导放在多的一方

**/

@OneToOne(mappedBy="course")

publicTeachergetTeacher(){

returnteacher;

}

publicvoidsetTeacher(Teacherteacher){

this.teacher=teacher;

}

/*

*为实现双向的多对一关联,添加属性mappedBy,使确定该实体被映射在student中的course属性上,主导放在多的一方

**/

@OneToMany(mappedBy="course")

//单向一对多关联

//@JoinColumn(name="Course_id")

publicSet<Student>getStudent(){

returnstudent;

}

publicvoidsetStudent(Set<Student>student){

this.student=student;

}

@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值