hibernate联合主键配置

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)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值