您的位置:首页 > 数据库 > Oracle

hibernate联合主键配置

2013-05-24 11:23 316 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 联合主键