1.树形单向多对一关联:(对应上图1)
代码:
Session session = HibernateUtils.getSession();
try{
session.beginTransaction();
Organization org1 = new Organization();
org1.setName("org1");
session.save(org1);
Organization org2 = new Organization();
org2.setName("org2");
org2.setParent(org1);
session.save(org2);
Organization org3 = new Organization();
org3.setName("org3");
org3.setParent(org1);
session.save(org3);
Organization org4 = new Organization();
org4.setName("org4");
org4.setParent(org1);
session.save(org4);
session.getTransaction().commit();
}catch(Exception e){
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
映射:
<hibernate-mapping>
<class table="T_Organization" name="com.bjsxt.oa.model.Organization">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="sn"/>
<property name="description"/>
<!-- 子对父 多对一单向关联 -->
<many-to-one column="pid" name="parent"/>
</class>
</hibernate-mapping>
2.单向一对多关联::(对应上图2)
代码:
Session session = HibernateUtils.getSession();
try{
session.beginTransaction();
Set set = new HashSet();
Organization org2 = new Organization();
org2.setName("org2");
session.save(org2);
set.add(org2);
Organization org3 = new Organization();
org3.setName("org3");
session.save(org3);
set.add(org3);
Organization org4 = new Organization();
org4.setName("org4");
session.save(org4);
set.add(org4);
Organization org1 = new Organization();
org1.setName("org1");
org1.setChildren(set);
session.save(org1);
session.getTransaction().commit();
}catch(Exception e){
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
映射:
<hibernate-mapping>
<class table="T_Organization" name="com.bjsxt.oa.model.Organization">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="sn"/>
<property name="description"/>
<!-- 父对子 一对多单向关联 -->
<set lazy="false" inverse="true" name="children">
<key column="pid"/> <!-- 这个指明了如何存储id -->
<one-to-many class="com.bjsxt.oa.model.Organization"/>
</set>
<!-- 两个一起就是一对多双向关联 -->
</class>
</hibernate-mapping>
3.双向多对一关联::(对应上图3)
Session session = HibernateUtils.getSession();
try{
session.beginTransaction();
Set set = new HashSet();
Organization org2 = new Organization();
org2.setName("org2");
//session.save(org2);
set.add(org2);
Organization org3 = new Organization();
org3.setName("org3");
//session.save(org3);
set.add(org3);
Organization org4 = new Organization();
org4.setName("org4");
//session.save(org4);
set.add(org4);
Organization org1 = new Organization();
org1.setName("org1");
org1.setChildren(set);
//session.save(org1);
org2.setParent(org1);
org3.setParent(org1);
org4.setParent(org1);
session.save(org1);
session.save(org2);
session.save(org3);
session.save(org4);
session.getTransaction().commit();
}catch(Exception e){
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
映射:
<hibernate-mapping>
<class table="T_Organization" name="com.bjsxt.oa.model.Organization">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="sn"/>
<property name="description"/>
<!-- 子对父 多对一单向关联 -->
<many-to-one column="pid" name="parent"/>
<!-- 父对子 一对多单向关联 -->
<set lazy="false" inverse="true" name="children">
<key column="pid"/> <!-- 这个指明了如何存储id -->
<one-to-many class="com.bjsxt.oa.model.Organization"/>
</set>
<!-- 两个一起就是一对多双向关联, -->
</class>
</hibernate-mapping>