您的位置:首页 > 其它

Hibernate的单向关联和双向关联

2013-01-17 10:31 567 查看
当使用单向关联时,由父类管理关联关系,子类无法管理;而这时,父亲知道自己的儿子,但是,儿子对象不知道父亲是谁。

单向关联时,只需指定<one-to-many> 。

当使用双向关联时,关联关系的管理可以通过inverse指定,这时,儿子能清楚的知道自己的父亲是谁。

双向关联时,还需要指定<many-to-one>。

例如:



public class DbView {
@Expose
private Long viewId;
@Expose
private String name;
@Expose
private Timestamp createTime;

private Set wsIntefaces = new HashSet(0);      //反向关联,子类也知道父类是谁
private Set dbViewColums = new HashSet(0);
}
public class DbViewColum {
@Expose
private Long id;
@Expose
private DbView dbView;     //正向关联,父类管理子类
@Expose
private String columnName;
@Expose
private char  columnType;
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.gdsc.model.ws.DbView" table="db_view">
<id name="viewId" type="java.lang.Long">
<column name="view_id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="view_name" />
</property>
<property name="createTime" type="java.sql.Timestamp">
<column name="createTime" length="23" />
</property>
<set name="wsIntefaces" inverse="true">
<key>
<column name="view_id" />
</key>
<one-to-many class="com.gdsc.model.ws.WsInteface" />
</set>
<set name="dbViewColums" inverse="true">
<key>
<column name="view_id" />
</key>
<one-to-many class="com.gdsc.model.ws.DbViewColum" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.gdsc.model.ws.DbViewColum" table="db_view_colum">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<many-to-one name="dbView" class="com.gdsc.model.ws.DbView" fetch="select">
<column name="view_id" />
</many-to-one>
<property name="columnName" type="java.lang.String">
<column name="column_name" />
</property>
<property name="columnType" type="java.lang.Character">
<column name="column_type" />
</property>
</class>
</hibernate-mapping>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐