我试图对工作门户用例进行建模,如下面的类图所示。我已将 Skill 实体设置为可供工作以及希望重用的求职者共享。
我已经修改了我的 oo 设计,因为我分享了我认为这意味着它的 M:N 关系而不是 1:N 的技能。
- http://imagebin.org/219822(修改了 M:N 与 Skill 的关系)
- http://imagebin.org/219680(旧与技能 1:N 关系)
问题:
如何使用 hibernate 做以下事情?我需要求助于 SQL 吗?
- 由于 Skill 具有 M:N 关系,因此需要关联表 JobSkill 和 SeekerSkill。如何创建工作或求职者实例,以便他们使用数据库中的现有技能?
- 我需要进行技能匹配,以便工作技能要求是候选人技能的子集:
a)雇主 e1:找到所有候选人 - 1{job + 1{candidate}N }N
b)候选人 c1:找到所有工作 - 1{job + 雇主 }N
我正在考虑为这种情况添加一个业务服务类作为 JobPortal,其中一些方法如下伪代码。如果可以回答findJobsForSeeker方法所需的 HQL 查询:
public class JobPortal {
public int createEmployer(String name, Address address) {
Employer e = null;
HBUtil.create(e = new Employer(name, address));
return e.getId();
}
public void addJobToEmployer(int empid, String jobName, String[][] skills) {
Employee e = HBUtil.get(empid, Employee.class);
Job j = new Job(jobName);
Skill s = null;
for(int i=0; i<skills.length; i++) {
s = HBUtil.find(skills[i][0], skills[i][1], Skill.class);
if (null == s) {
s = new Skill(skills[0], Interger.parseInt(skills[1])); //name, experience
}
j.add(s);
}
e.add(j);
HBUtil.save(e);
}
public int createSeeker(String name) {
Seeker s = null;
DBUtil.create(s = new Seeker(name));
return s.getId();
}
public void addSkillsToSeeker(int sid, String[][] skills) {
Seeker seeker = HBUtil.get(sid, Seeker.class);
for(int i=0; i<skills.length; i++) {
s = HBUtil.find(skills[i][0], skills[i][1], Skill.class);
if (null == s) {
s = new Skill(skills[0], Interger.parseInt(skills[1])); //name, experience
}
seeker.add(s);
}
HBUtil.save(seeker);
}
public void findJobsForSeeker(int sid) {
//what HQL do use ?
}
}