hibernate复合主键映射composite-id实例



hibernate复合主键映射composite-id实例。一般把复合主键相关的属性单独放到一个类中:

* 此类必须实现序列化接口

* 覆写hashcode和equals方法

假如在表中有两个列合起来当主键怎么处理?强烈不建议使用这种方式。 编写一个类(实现序列化接口),封装主键,并写属性。例如:

public class CustomerPK implements Serializable{//主键类

private String account;

private String password;

public String getAccount() {

return account;

}

public void setAccount(String account) {

this.account = account;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

Po内编写各个属性,包括主键类型。例如:

public class Customer{

private CustomerPK cpk;//主键类

private String cname;

private double cbalance;

public Customer(){}

public double getCbalance() {

return cbalance;

}

public void setCbalance(double cbalance) {

this.cbalance = cbalance;

}


public String getCname() {

return cname;

}

public void setCname(String cname) {

this.cname = cname;

}

public CustomerPK getCpk() {

return cpk;

}

public void setCpk(CustomerPK cpk) {

this.cpk = cpk;

}

}

在映射文件中申明复合主键。例如:

<?xml version=”1.0″?>

<!DOCTYPE hibernate-mapping PUBLIC

“-//Hibernate/Hibernate Mapping DTD 3.0//EN”

“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<hibernate-mapping>

<class name=”po.Customer” table=”T_CUSTOMER”>

<composite-id name=”cpk”>  <!– 复合主键 –>

<key-property name=”account” column=”ACCOUNT”>

</key-property>

<key-property  name=”password”  column=”PASSWORD”>

</key-property>

</composite-id>

<property name=”cname”      column=”CNAME”/>

<property name=”cbalance”   column=”CBALANCE”/>

</class>

</hibernate-mapping>