【发布时间】:2015-09-23 14:34:45
【问题描述】:
我从来没有通过加入 3 个表来编写 Hibernate 代码,我遇到了困难。
我有以下 3 个数据库表。
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)
);
请找到以下 bean 类:
@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
}
我的要求是,用户从 UI(JSP) 输入员工姓名和技能名称,并将其插入到 EMPLOYEE_SKILLS 表中。此表包含多个员工及其多种技能。
您能帮忙将所需的 Hibernate 映射添加到上述 Bean 吗?您还可以帮助了解如何使用 DAO insert() 方法将员工姓名和技能保存到 EMPLOYEE_SKILLS 表中?
【问题讨论】:
-
阅读休眠文档。
-
不要认为您需要自己创建连接表 (EmployeeSkillsBean),您只需在 Employee 类上使用 @OneToMany
-
所以你“面临困难”,但不要说它们是什么。例外?架构不映射?懒得看说明书?
标签: java spring hibernate jpa orm