Hibernat 配置多对一,一对多,多对多关系
我建了4个表,
1 Cascade //级联
inverse //由谁控制
Course 主键 kid 科目表
Student 主键 sid 学生表 外键cid
Clazz cid 班级表
stu_course 关联表 主键scid 外键 sid kid;
班级和学生是一对多的关系
那么学生对班级就是一对多
stu.hbm.xml
<many-to-one name="clazz" class="com.org.entity.Clazz" fetch="select" lazy="false"> <column name="cid" /> </many-to-one>
clazz.hbm.xml
正常bag节点是set,因为我在clazz.java中把set集合变为list,要把构造方法重写一下,和list的set、get方法
1 <bag name="stus" inverse="true" lazy="false"> 2 <key> 3 <column name="cid" /> 4 </key> 5 <one-to-many class="com.org.entity.Stu" /> 6 </bag>
如果要获取关联表的数据就要在这个实体的hbm。xml中把lazy="false"这样就能查到了
多对多
首先数据库要有关联表,不用实体类、关联表的名字Stu_Couse
stu.hbm.xml
1 <set name="stuCouses" lazy="false" table="Stu_Couse" inverse="true"> 2 <key> 3 <column name="sid" /> 4 </key> 5 <many-to-many class="com.org.entity.Couse" column="kid"/> 6 </set>
talbe设置关联表的名字《key》不要改, many -to-many class指的是多对多的表,也就是course colun节点必填写的是关联表中的关联字段
1 <many-to-many class="com.org.entity.Couse" column="kid"/> 2
course。hbm。xml
1 <set name="stuCouses" table="Stu_Couse" inverse="true" lazy="false"> 2 <key> 3 <column name="kid" /> 4 </key> 5 <many-to-many class="com.org.entity.Stu" column="sid"/> 6 </set>
这样就成了
Demo 可以看一下http://pan.baidu.com/share/link?shareid=29999&uk=1712110123学的不好见谅
当一个男人什么都没有的时候,他该拿什么说爱呢,