`

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>

分享到:
评论

相关推荐

    hibernate 无主键表映射

    这种情况通常出现在那些通过多个字段共同唯一标识一条记录的复合主键(Composite Key)场景。本文将详细介绍如何在Hibernate中进行无主键表映射,并结合提供的资源进行说明。 首先,我们要理解什么是复合主键。在...

    hibernate联合主键全攻略

    联合主键(Composite Primary Key),是指在数据库表中使用两个或多个字段共同作为主键来唯一标识每一行记录。这种方式在实际应用中非常常见,尤其是在需要通过多维度数据来确定唯一性的场景下。 ### Hibernate联合...

    jpa-hibernate-tutorials:带有Spring Boot和Spring-Data-JPA的Hibernate教程

    **六、复合主键(Composite Primary Key)** 当一个实体的主键由两个或更多个属性组成时,可以使用@EmbeddedId和@Embeddable注解定义复合主键。 **七、Element Collection** Element Collection用于将非实体类型的...

    hibernate基础 入门/ hibernate basic

    6. **Composite Primary Key**:复合主键,用于标识表中的记录,当单一字段不足以唯一标识一条记录时使用。 **SessionFactory的作用**: - **创建Session实例**:SessionFactory负责创建Session实例,并管理这些...

    Hibernate 中文 html 帮助文档

    触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一...

    hibernate 体系结构与配置 参考文档(html)

    触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对...

    最全Hibernate 参考文档

    触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (optional) 5.1.9. property 5.1.10. 多对一...

    jPA+hibernate

    **联合主键(Composite Primary Key)**在JPA中,当一个实体的主键由两个或更多个字段组成时,我们称之为联合主键。`JPACompositePK`示例将说明如何使用`@Embeddable`和`@EmbeddedId`注解来定义这样的主键。 在这些...

    Hibernate教程

    触发器实现的主键生成器(Primary keys assigned by triggers) 6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多...

    Hibernate3的帮助文档

    触发器实现的主键生成器(Primary keys assigned by triggers) 6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. 多...

    Hibernate3+中文参考文档

    触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (optional) 5.1.9. property 5.1.10. 多对一...

    hibernate3.04中文文档.chm

    触发器实现的主键生成器(Primary keys assigned by triggers) 6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. ...

    hibernate 框架详解

    触发器实现的主键生成器(Primary keys assigned by triggers) 6.1.5. composite-id 6.1.6. 鉴别器(discriminator) 6.1.7. 版本(version)(可选) 6.1.8. timestamp (optional) 6.1.9. property 6.1.10. ...

    自己整理的JPA帮助文档

    - **主键(Primary Key)**: 主键是数据库表中用于唯一标识一条记录的字段。在JPA中,可以使用`@Id`注解来指定主键字段。 - **持久化(Persistence)**: 这是JPA的核心概念,意味着对象的状态可以被保存到数据库并在...

    Hibernate参考文档

    触发器实现的主键生成器(Primary keys assigned by triggers) 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一...

    eib3.0中的注解

    复合主键 (Composite Primary Key) - **定义**:当需要使用多个属性变量(表中的多列)联合起来作为主键时,就需要使用复合主键。复合主键要求开发者自定义一个复合主键类。 - **示例**: ```java @Embeddable ...

    EJB 注释精解(pdf版)

    复合主键(Composite Primary Key) 复合主键是指使用多个属性变量(表中的多列)联合起来作为主键。为了实现复合主键,需要编写一个复合主键类(CompositePrimaryKeyClass),并遵循以下规则: - **复合主键类...

    jpa 全面学习资料

    - **复合主键(Composite Key)**: 当主键由多个字段组成时的处理。 - ** Criteria 查询**: 动态构建查询的API,提供更多灵活性。 **6. JPA实战** 实战部分通常包含实际项目中的应用案例,如: - **Spring Boot + ...

    EJB中的注释.pdf

    #### 六、复合主键(Composite Primary Key) 实体Bean还可以支持复合主键,即主键由多个属性共同组成。这在某些应用场景中非常有用,例如当实体之间的关联关系较为复杂时。 总结而言,EJB中的注解为开发者提供了一...

Global site tag (gtag.js) - Google Analytics