[Hibernate]多个字段共同构成主键

表SWPBusinessToDo 拥有2个字段,一起构成主键。

//表的主体映射
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "TB_SWP_BusinessToDo")
@SuppressWarnings("serial")
public class SWPBusinessToDo implements java.io.Serializable{
@Id
private SWPBusinessToDoPK id;

public SWPBusinessToDoPK getId() {
return id;
}
public void setId(SWPBusinessToDoPK id) {
this.id = id;
}
}
//将形成主键的字段抽取出来,单独做一个嵌套映射。
//要求重写了equals 跟 hashCode 方法。
import javax.persistence.Column;
import javax.persistence.Embeddable;

@Embeddable
public class SWPBusinessToDoPK implements java.io.Serializable{

private static final long serialVersionUID = 1L;

private Long businessId;

private String operator;

@Column(name = "businessId", nullable = true, unique = false, insertable = true, updatable = true)
public Long getBusinessId() {
return businessId;
}

public void setBusinessId(Long businessId) {
this.businessId = businessId;
}
@Column(name = "operator", nullable = true, unique = false, insertable = true, updatable = true)
public String getOperator() {
return operator;
}

public void setOperator(String operator) {
this.operator = operator;
}

@Override
public boolean equals(Object obj) {
if(obj instanceof SWPBusinessToDoPK){
SWPBusinessToDoPK pk = (SWPBusinessToDoPK)obj;
if(pk.getBusinessId() == this.businessId &&
pk.getOperator().equals(this.operator)){
return true;
}
}
return false;
}

@Override
public int hashCode() {
return (this.operator + this.businessId).hashCode();
}

}


使用的时候,例如:

SWPBusiness = new SWPBusinessToDo();
SWPBusinessToDoPK pk = new SWPBusinessToDoPK();
pk.setBusinessId( businessId);
pk.setOperator(operatorId);

SWPBusiness.setId(pk);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值