以下为例,一个用户对就一个部门,一个部门则对应有多个用户
1、实体类
一方类:user
public class User {
private int id;
private String name;
private int age;
private String pwd;
private Department dpt; //该属性与部门建立关系
.............set、get方法略
}
多方:Department
public class Department {
private int id;
private String name;
private Set<User> users = new HashSet<User>(); //该属性与用户建立关系
.............set、get方法略
}
2、映射配置文件
User.hbm.xml
<hibernate-mapping>
<class name="com.restfullDemo.model.User" table="t_user">
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="name" />
</property>
<property name="age" type="int">
<column name="age" />
</property>
<property name="pwd" type="java.lang.String">
<column name="pwd" />
</property>
<many-to-one name="dpt" class="com.restfullDemo.model.Department" fetch="join" lazy="false">
<column name="dpt_id" />
</many-to-one>
</class>
注意:当使用 hql语句“from User”进行查询,并将结果转成List时,需要将 lazy="false"即为即时加载,默认为懒加载,则在转换时找不到Departmet的数据,会报类型转换错误。
Department.hbm.xml
<hibernate-mapping>
<class name="com.restfullDemo.model.Department" table="t_department">
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<set name="users" table="user" inverse="false" lazy="false">
<key>
<column name="id" />
</key>
<one-to-many class="com.restfullDemo.model.User" />
</set>
</class>
</hibernate-mapping>