初学者,遇到一个JPA查询的问题,请大家不吝赐教!
@Entity
@Table(name = "person")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "person_id")
private Long person_id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "person", cascade = CascadeType.ALL)
private Set<Skill> skills = new HashSet<>();
/**
* Returns a set containing all skills owned by this user.
*/
@Override
public Set<Skill> getSkills() {
return skills;
}
/**
* Adds the specified skill to the set of skills owned by this user.
*/
public void addSkill(Skill skill) {
skills.add(skill);
}
/**
* Required by JPA, should not be used.
*/
protected User() {
}
public User(String name) {
this.name = name;
person_id = BeanFactory.getBean(BusinessIdGenerator.class).generatePerson_id();
}
public Long getPerson_id() {
return person_id;
}
public void setPerson_id(Long person_id) {
this.person_id = person_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
return person_id.hashCode();
}
@Override
public boolean equals(Object object) {
if (!(object instanceof User)) {
return false;
}
User other = (User)object;
return this.person_id.equals(other.person_id);
}
@Override
public String toString() {
return Util.toString(this);
}
}
@Entity
@Table(name = "skills")
public class Skill {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = skill_id")
private Long skill_id;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "person_id")
private User user;
@Column(name = "name")
private String name;
/**
* Required by JPA, should not be used.
*/
protected Skill() {
}
public Skill(User user,Long skill_id) {
this.user = user;
skill_id = BeanFactory.getBean(BusinessIdGenerator.class).generateSkill_id();
}
@Override
public Long getSkill_id() {
return skill_id;
}
}
现在如果招聘人员想根据一组技能(List<Skill> requiredSkills)来查找符合这些技能中某个/某些技能的一组用户(Set<User> users)该怎么找,可不可以在UserRepository里加入以下这个方法? 如果不可行,有没有什么建议?
List<User> findBySkillsIn(List<Skill> requiredSkills);