Hibernate中复合主键的用法

本文讲解了在Hibernate框架中如何处理复合主键,包括实现Serializable接口及重写hashCode与equals方法的原因,还介绍了如何通过复合主键类进行数据库操作。

     类中的每个主键属性都对应到数据库表中的每个主键列。

Hibernate要求具有联合主键的实体类实现serializable接口,

并且重写hashCode与equals方法,重写这两个方法的原因

在于Hibernate要根据数据库的联合主键来判断某两行记录

是否是一样的,如果一样那么就认为是同一个对象,如果不

一样,那么就认为是不同的对象。这反映到程序领域中就是

根据hashCode和equals方法来判断某两个对象是否能够放

到诸如Set这样的集合当中。

       我们可以提取复合主键中的属性到一个类中,称这样的

类为复合主键类,但该类同样需要实现serializable接口,

且重写hashCode与equals方法,并且在相应的hbm配置文件

中设置composite-id元素中的name属性,class类型即为主键

类,如下所示:

<composite-id name="studentPrimaryKey" class="com.panlei.hibernate.StudentPrimaryKey">
    <key-property name="name" type="string"></key-property>
    <key-property name="cardId" type="string"></key-property>
   </composite-id>

需要实现serializable接口的原因在于查询含有复合主键的对象

时,可以通过session的get方法获取需要查询的对象,而传入

的参数为serializable类型的,因此我们需要实现serializable接

口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值