如何使用Hibernate注释实现复合主键

如何使用Hibernate注释实现复合主键,hibernate,annotations,Hibernate,Annotations,我想知道如何通过Hibernate注释方法创建复合组合 我有三张表:员工、部门和员工部门 由于我想将Employee和Department作为单独的表,所以我创建了一个连接表来维护多对多关系 我想知道如何为Department表创建复合主键 对于列中心代码&通过Hibernate注释分离代码 你能找个人帮我解决这个问题吗 下面我还附加了表关系和JavaPOJO类 表关系 JAVA POJO类 package com.hibernate; import java.util.Objects; i

我想知道如何通过Hibernate注释方法创建复合组合

我有三张表:员工、部门和员工部门

由于我想将Employee和Department作为单独的表,所以我创建了一个连接表来维护多对多关系

我想知道如何为Department表创建复合主键 对于列中心代码&通过Hibernate注释分离代码

你能找个人帮我解决这个问题吗

下面我还附加了表关系和JavaPOJO类

表关系

JAVA POJO类

package com.hibernate;

import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.Id;

/**
 *
 * @author SPAR
 */
@Entity
public class Department {

    @Id
    private String cost_Center_Code;
    private String dep_Code;
    private String department;
    private String sub_Department;
    private String division;

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public String getDep_Code() {
        return dep_Code;
    }

    public void setDep_Code(String dep_Code) {
        this.dep_Code = dep_Code;
    }

    public String getCost_Center_Code() {
        return cost_Center_Code;
    }

    public void setCost_Center_Code(String cost_Center_Code) {
        this.cost_Center_Code = cost_Center_Code;
    }

    public String getDivision() {
        return division;
    }

    public void setDivision(String division) {
        this.division = division;
    }

    public String getSub_Department() {
        return sub_Department;
    }

    public void setSub_Department(String sub_Department) {
        this.sub_Department = sub_Department;
    }

    @Override
    public String toString() {
        return "Department{" + "cost_Center_Code=" + cost_Center_Code + ", dep_Code=" + dep_Code + ", department=" + department + ", sub_Department=" + sub_Department + ", division=" + division + '}';
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 79 * hash + Objects.hashCode(this.cost_Center_Code);
        hash = 79 * hash + Objects.hashCode(this.dep_Code);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Department other = (Department) obj;
        if (!Objects.equals(this.cost_Center_Code, other.cost_Center_Code)) {
            return false;
        }
        if (!Objects.equals(this.dep_Code, other.dep_Code)) {
            return false;
        }
        return true;
    }

}

我认为,您需要的是
EmbeddedId
,您可以执行以下操作

  • 首先从你的
    部门
    类中取出这些列,创建一个新类,如下所示

        @Embeddable    
        class CenterDeptId{
    
           @Column(name = "center_code")
           private String cost_Center_Code;
    
           @Column(name = "dep_code")
           private String dep_Code;
    
           // getter && setter 
    
       }
    
  • 在你的系课上使用上述课程

    @Entity    
    public class Department {
    
        @EmbeddedId
        private CenterDeptId centerDeptId;
        private String department;
        private String sub_Department;
        private String division;
    
      //getter && setter
    
    }
    
  • @Entity
    public class Department {
    
        @EmbeddedId
        private DepartmentId departmentId
    
        private String department;
        private String sub_Department;
        private String division;
    }
    
    @Embeddable
    public class DepartmentId {
        @Column(name = "")
        private String cost_Center_Code;
    
        @Column(name = "")
        private String dep_Code;
    
        //getter, setter methods
    }