hibernate映射文件中对于主键的配置有很多种方式,以oracle数据库为例:
如需手动分配id主键,配置如下:
<id name="id" type="java.lang.String">
<column name="ID" length="50" />
<generator class="assigned" />
</id>
如需自动增加id主键,配置如下:
<id name="id" type="java.lang.Long">
<column name="ID" length="10" />
<generator class="sequence">
<param name="sequence">myoracle.ID</param>
</generator>
</id>
如果是联合主键,配置如下:
<composite-id name="personId" class="com.po.PersonId">
<key-property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</key-property>
<key-property name="password" type="java.lang.String">
<column name="PWD" length="10" />
</key-property>
</composite-id>
联合主键类:
package com.po;
import java.io.Serializable;
import org.apache.commons.lang.builder.HashCodeBuilder;
public class PersonId implements Serializable {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean equals(Object other){
if(this != other) return false;
if(!(other instanceof PersonId)) return false;
PersonId persionother=(PersonId)other;
if(!this.getName().equals(persionother.getName())) return false;
if(!this.getPassword().equals(persionother.getPassword())) return false;
return true;
}
public int hashCode(){
return new HashCodeBuilder()
.append(this.getName())
.append(this.getPassword())
.toHashCode();
}
}
然后在实体类种加上PersonId personId属性即可(set,get)