Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于连接3个表的Hibernate bean映射_Java_Spring_Hibernate_Jpa_Orm - Fatal编程技术网

Java 用于连接3个表的Hibernate bean映射

Java 用于连接3个表的Hibernate bean映射,java,spring,hibernate,jpa,orm,Java,Spring,Hibernate,Jpa,Orm,我从未通过加入3个表来编写Hibernate代码,我面临着困难 我有以下3个数据库表 请按如下方式查找bean类: 我的要求是,从UIJSP中,用户输入员工姓名和技能名称,并将其插入到Employee_SKILLS表中。此表包含多个员工及其多种技能 您可以通过向上述bean添加所需的Hibernate映射来提供帮助吗?您还可以帮助了解DAO insert方法如何将员工姓名和技能保存到employee_SKILLES表中吗 我假设一个员工可以拥有许多技能阅读hibernate文档。不要认为你需要创

我从未通过加入3个表来编写Hibernate代码,我面临着困难

我有以下3个数据库表

请按如下方式查找bean类:

我的要求是,从UIJSP中,用户输入员工姓名和技能名称,并将其插入到Employee_SKILLS表中。此表包含多个员工及其多种技能

您可以通过向上述bean添加所需的Hibernate映射来提供帮助吗?您还可以帮助了解DAO insert方法如何将员工姓名和技能保存到employee_SKILLES表中吗


我假设一个员工可以拥有许多技能

阅读hibernate文档。不要认为你需要创建联接表EmployeeSkills自己清理你自己,你只需在employee类上使用@OneToMany,这样你就面临困难,但不要说它们是什么。例外架构不映射?我不知道是谁投了反对票,但我的问题是,我们如何单独使用这些bean将记录添加到EMPLOYEE_SKILLS表中?我强烈感觉我们也需要第三个bean。Hibernate将自己创建连接表。每当一个SkillBean被添加到EmployeeBean的技能列表中时,hibernate将负责插入到第三个表中。不需要第三个Bean在这种情况下,DAO insert方法如何将名称和技能添加到emp_技能表中?我已经编辑了我的查询,请帮助。
CREATE TABLE EMPLOYEE (  
  EMP_ID int(6) NOT NULL AUTO_INCREMENT,  
  EMP_NAME varchar(20) NOT NULL,  
  PRIMARY KEY (EMP_ID));     

CREATE TABLE SKILLS (  
  SKILL_NAME varchar(20) NOT NULL,  
  PRIMARY KEY (SKILL_NAME)
);  

CREATE TABLE EMPLOYEE_SKILLS( 
  EMPLOYEE_ID int(6) NOT NULL,  
  SKILL varchar(20) NOT NULL,   
  KEY EMPLOYEE_fk (EMPLOYEE_ID),  
  KEY SKILLS_fk (SKILL),  
  CONSTRAINT EMPLOYEE_fk FOREIGN KEY (`EMPLOYEE_ID`) REFERENCES `EMPLOYEE` (`EMP_ID`) ON DELETE CASCADE ON UPDATE CASCADE,  
  CONSTRAINT SKILLS_fk FOREIGN KEY (`SKILL`) REFERENCES `SKILLS` (`SKILL_NAME`) ON DELETE CASCADE ON UPDATE CASCADE, 
  UNIQUE(EMPLOYEE_ID,SKILL)
);
@Entity
@Table(name = "EMPLOYEE")
public class EmployeeBean implements Serializable {

    @Id
    @Column(name="EMP_ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int employeeid;

    @Column(name="EMP_NAME")
    private String employeeName;

    //Add Mappings here
}


@Entity
@Table(name="SKILLS")
public class SkillsBean implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="SKILL_NAME", unique = true)
    private String skillName;

    //Add your mappings here
}

@Entity
@Table(name = "EMPLOYEE_SKILLS")
public class EmployeeSkillsBean implements Serializable {

    @Embeddable
    public static class Id implements Serializable {

        @Column(name="EMPLOYEE_ID")
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private int employeeId;

        @Column(name="SKILL")
        private String skillName;

        public Id() {
        }

        public Id(int employeeId, String skillName) {
            this.employeeId = employeeId;
            this.skillName = skillName;
        }

        public boolean equals(Object obj) {
            if(obj != null && obj instanceof Id) {
                Id idObj = (Id)obj;
                return this.employeeId == idObj.employeeId && this.skillName.equals(idObj.skillName) ;
            } else {
                return false;
            }
        }

        public int hashcode() {
            return employeeId+"".hashCode() + skillName.hashCode();
        }
    }

    @EmbeddedId
    private Id id = new Id();

    //Add your mappings here    
}
@Entity
@Table(name = "EMPLOYEE")
public class EmployeeBean implements Serializable {

    @Id
    @Column(name="EMP_ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int employeeid;

    @Column(name="EMP_NAME")
    private String employeeName;

    @OneToMany(mappedBy="employee")
    private List<SkillsBean> skills;

    //Add Mappings here
}


@Entity
@Table(name="SKILLS")
public class SkillsBean implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="SKILL_NAME", unique = true)
    private String skillName;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="EMP_ID")
    private EmployeeBean employee;

    //Add your mappings here
}