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