联合主键主要思想就是把主键换成一个类,在类里进行主键对应属性的集合。
在主键类里,要重写equals方法,hashCode方法,implements Serializable。
重写equals是为了在类中确保主键的唯一性,与数据库保持一致。
重写hashCode是为了:当对象被转载在hash表里,就会使用到。
Serializable是为了实现序列化。若是内存满了,就要把对象暂时写到硬盘上,就需要序列化,或者是通过网络序列到其他机上,也需要序列化。
在javabean里,要重新生成主键类的get set方法。
较难的是对配置文件的修改。
composite-id 表示主键列表,name属性表示Student中的主键类的对象名称,k1,k2是主键类的两个主键属性。
<hibernate-mapping package="com.wanhao">
<class name="Student">
<composite-id name="pk" >
<key-property name="k1"></key-property>
<key-property name="k2"></key-property>
</composite-id>
<property name="id"></property>
<property name="name"></property>
<property name="age"></property>
</class>
</hibernate-mapping>
还有在 Annocation 中联合主键。
在主键类实现 java.io.Serializable 上面写@Embeddable,然后在javabean里的主键类的get方法上@Id 就好。