hibernate关联关系查询
关联关系
一对一 A中包含B的对象,B中包含A的对象
一对多 A中包含B的集合,B中包含A的对象
多对多 A中包含B的集合,B中包含A的集合
1,一对多配置
一名老师可以对应多名学生
2,模型类
老师类中包含学生的集合(通常可以将集合直接进行初始化)
学生类中包含老师的对象
3,配置
1 TeacherModel.hbm.xml(教师) 2 <hibernate-mapping package="cn.itcast.h3.realtion.one2many.vo" > 3 <class name="TeacherModel" table="tbl_teacher"> 4 <id name="uuid"> 5 <generator class="native"/> 6 </id> 7 <property name="teacherName"/> 8 <property name="nick"/> 9 <!-- name:集合对象名 --> 10 <set name="students"> 11 <!-- 使用key描述对应的关系表中的外键字段 --> 12 <!-- column:外键字段名(student表中) --> 13 <key column="teacherUuid"/> 14 <!-- 使用one-to-many配置关联关系 --> 15 <!-- class:配置对应的关系模型类 --> 16 <one-to-many class="cn.itcast.h3.one2many.StudentModel"/> 17 </set> 18 </class> 19 </hibernate-mapping> 20 注意:key元素必须出现在one-to-many元素的前面,否则报错 21 StudentModel.hbm.xml(学生) 22 <hibernate-mapping package="cn.itcast.h3.realtion.one2many.vo" > 23 <class name="StudentModel" table="tbl_student"> 24 <id name="uuid"> 25 <generator class="native"/> 26 </id> 27 <property name="studentName"/> 28 <property name="className"/> 29 <!-- 配置多对一关系中的一方对象 --> 30 <!-- many-to-one描述多对一关系 --> 31 <!-- name:对象名 --> 32 <!-- column:外键字段名(student表中) --> 33 <!-- class:配置对应的关系模型类 --> 34 <many-to-one 35 name="teacher" 36 column="teacherUuid" 37 class="cn.itcast.h3.one2many.TeacherModel" 38 /> 39 </class> 40 </hibernate-mapping>
4,资源注册
<mapping resource="cn/itcast/h3/one2many/vo/StudentModel.hbm.xml"/> <mapping resource="cn/itcast/h3/one2many/vo/TeacherModel.hbm.xml"/>
5,备注:
两边的配置也可以只配置一方,
如果仅仅配置老师可以通过老师找到学生,但是不能通过学生找到老师
如果只配置学生可以通过学生找到老师,但是不能通过老师找到学生