您的位置:首页 > 其它

关于Hibernate 复合主键 简单使用

2012-11-01 14:51 274 查看
一、用到复合主键时,hibernate处理复合主键映射是基于这样一种做法:把目标类中所有主键关联属性抽出来,单独写成一个类(暂且叫它主键类),目标类就只需持有主键类对象,而不必再包含各个主键属性;在映射文件中使用<composite-id>标签来配置主键对象并指出关联属性,普通属性照常配置;hibernate只会创建一张表在,并且把主键设置为主键类各属性的联合主键,存储和加载数据时,会自然的把关联对象各属性跟表中的主键字段对应起来。

在网上找到的资料都是将主键关联属性抽出来,单独写成一个类。

经过实验,我们可以更简单的使用:

实体类:

public class WapSort implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;

private WapSort wapSort;  //自身定义为属性

private String sortName;
private Date createTime;

public WapSort getWapSort() {
return wapSort;
}
public void setWapSort(WapSort wapSort) {
this.wapSort = wapSort;
}
public String getSortName() {
return sortName;
}
........


配置文件写法一:

<hibernate-mapping>
<class name="com.pojo.WapSort" table="WAP_SORT" schema="*****">
<composite-id name="wapSort" class="com.pojo.WapSort">
<key-property name="sortName" type="java.lang.String">
<column name="SORT_NAME" precision="8" scale="0" />
</key-property>
<key-property name="createTime" type="java.lang.String">
<column name="CREATE_TIME" precision="8" scale="0" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
配置文件写法二:

<hibernate-mapping>
<class name="com.pojo.WapSort" table="WAP_SORT" schema="*****">
<composite-id name="wapSort" class="com.pojo.WapSort">
<key-property name="sortName" type="java.lang.String">
<column name="SORT_NAME" precision="8" scale="0" />
</key-property>
</composite-id>
<property name="createTime" type="java.util.Date">
<column name="CREATE_TIME" precision="8" scale="0"></column>
</property>
</class>
</hibernate-mapping>


这样我们可以将某些属性联合做成复合主键,或将整个实体类做成复合主键, 一个实体类,一个配置文件搞定复合主键!

复合主键实体类必须 实现 Serializable 接口,而hashCode方法与equals方法在实验中没有重写,貌似也没有问题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: