Hibernate实现单向一对多映射
数据库表中表现为“多”那方有“一”的外键,类中表现为“一”那方有“多”那方的集合。
“一”那方的xml 配置文件的格式如下:
﹤hibernate-mapping package=" 此处填写包文件 " ﹥
﹤class name=" 一对多中一的实体类的类名 " table=" 所对应的数据库的表名 " ﹥
﹤id name=" 所对应的实体类的属性 (id)"
column="所对应的数据表的字段 (**_id)"
unsaved-value="null" ﹥
﹤generator class="native"/ ﹥
﹤/id ﹥
﹤property name=" 对应数据表中其他的字段 " ﹥﹤ /property ﹥
﹤set name=" 对应实体类中的那个集合的属性 "
inverse="true"
lazy="true"
cascade="save-update" ﹥
﹤key column=" 对应其外键的字段 "/ ﹥
﹤one-to-many class=" 对应一对多中多的实体类的类名 "/ ﹥
﹤/set ﹥
﹤/class ﹥
﹤/hibernate-mapping ﹥
一个user 可以有多个亲人,以下为 user 的类,
public class User {
private int userID;
private String username;
private String password;
private Set<Relationship> relationships =
n ew HashSet<Relationship>();
/*属性的 get , set 方法 */
}
配置文件User.hbm.xml 如下:
<hibernate-mapping package= "com.gis.Entity" >
<class name= "com.gis.Entity.User" table = "user">
< id name = "userID" column ="userID" type= "java.lang.String" >
< generator class = "native"></ generator >
</ id >
< property name = "username" type ="java.lang.String" >
< column name = "username" />
</ property >
< property name = "password" type ="java.lang.String" >
< column name = "password" />
</ property >
< set name = " relationships " cascade ="save-update" >
<!-- 外键字段 -->
< key column = "userID"/>
< one-to-many class = "com.gis.Entity.Relationship"/>
</ set >
</ class >
</hibernate-mapping >
亲人relationship 的类:
public class Relationship {
private int r_id;
private String r_name;
private int userID;
private String phone;
/*属性的 get , set 方法 */
}