`

Hibernate--composite primary key(多主键)

阅读更多

   在hibernate中处理多主键的问题--

 

 

   复合(联合)主键映射

   通常将复合主键相关的属性,单独放到一个类中
   * 此类必须实现序列化接口
   * 覆写hashcode和equals方法


package com.hibernate;

import java.io.Serializable;

public class FiscalYearPeriodPK implements Serializable {

//核算年
private int fiscalYear;

//核算月
private int fiscalPeriod;

public int getFiscalYear() {
   return fiscalYear;
}

public void setFiscalYear(int fiscalYear) {
   this.fiscalYear = fiscalYear;
}

public int getFiscalPeriod() {
   return fiscalPeriod;
}

public void setFiscalPeriod(int fiscalPeriod) {
   this.fiscalPeriod = fiscalPeriod;
}

@Override
public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + fiscalPeriod;
   result = prime * result + fiscalYear;
   return result;
}

@Override
public boolean equals(Object obj) {
   if (this == obj)
    return true;
   if (obj == null)
    return false;
   if (getClass() != obj.getClass())
    return false;
   final FiscalYearPeriodPK other = (FiscalYearPeriodPK) obj;
   if (fiscalPeriod != other.fiscalPeriod)
    return false;
   if (fiscalYear != other.fiscalYear)
    return false;
   return true;
}

}


package com.hibernate;

import java.util.Date;

/**
* 核算期间
* @author wangy
*
*/
public class FiscalYearPeriod {

private FiscalYearPeriodPK fiscalYearPeriodPK;

//开始日期
private Date beginDate;

//结束日期
private Date endDate;

//状态
private String periodSts;

public Date getBeginDate() {
   return beginDate;
}

public void setBeginDate(Date beginDate) {
   this.beginDate = beginDate;
}

public Date getEndDate() {
   return endDate;
}

public void setEndDate(Date endDate) {
   this.endDate = endDate;
}

public String getPeriodSts() {
   return periodSts;
}

public void setPeriodSts(String periodSts) {
   this.periodSts = periodSts;
}

public FiscalYearPeriodPK getFiscalYearPeriodPK() {
   return fiscalYearPeriodPK;
}

public void setFiscalYearPeriodPK(FiscalYearPeriodPK fiscalYearPeriodPK) {
   this.fiscalYearPeriodPK = fiscalYearPeriodPK;
}
}


映射文件:

<hibernate-mapping>
<class name="com.bjsxt.hibernate.FiscalYearPeriod" table="t_fiscal_year_period">
   <composite-id name="fiscalYearPeriodPK">
    <key-property name="fiscalYear"/>
    <key-property name="fiscalPeriod"/>
   </composite-id>
   <property name="beginDate"/>
   <property name="endDate"/>
   <property name="periodSts"/>
</class>
</hibernate-mapping>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics