Hibernate中复合主键的用法

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

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

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

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

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

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

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

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

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

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

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

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

类,如下所示:


    
    
   

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

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

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

口。

你可能感兴趣的:(Hibernate中复合主键的用法)