您的位置:首页 > 其它

Hibernate学习21 -- 关联映射11 -- 复合主键映射(composite-id)

2009-12-04 12:43 465 查看
通常将复合主键相关的属性,单独放到一个类中
* 此类必须实现序列化接口
* 覆写hashcode和equals方法
如果在表中有两个列合起来当主键怎么处理?强烈不建议使用这种方式。
l 编写一个类(实现序列化接口),封装主键,并写属性。例如:
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;
}
}
l 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;
}
}
l 在映射文件中申明复合主键。例如:
<?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" class="po.CustomerPK"> <!-- 复合主键 -->
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐