特定のスキルを持つユーザーを検索できるように検索機能を設定しています。
以下は私のユーザーオブジェクトです:
public class User {
private int id;
private String email;
private String name;
private Set userSkills = new HashSet(0);
-- getters/setters --
}
スキル オブジェクトは次のとおりです。
public class Skill {
private int id;
private String skillName;
-- getters/setters --
}
最後に、UserSkill オブジェクトは、User と Skill の間の多対多の関係を管理する user_skill テーブルにマップされます。
public class UserSkill {
private int id;
private int userId;
private int skillId;
-- getters/setters --
}
ここでの要件は、スキル ID 13、29、および 31 にサブスクライブしているユーザーのリストを見つけることです。
私の試みは次のとおりです。
Query q = session.createQuery(
"from User as user " +
"left join fetch user.userSkills as us " +
"where us.skill = 13 AND us.skill = 29 AND us.skill = 31");
list = (ArrayList<User>) q.list();
ID 13、29、および 31 のスキルにサブスクライブしているユーザーがいるにもかかわらず、返されるリストが常に空であるため、上記は機能しません。
誰かが適切な HQL を提案できますか、または Hibernate Criteria API を使用してこれを行う必要があるかどうかを教えてください。例を投稿するか、例のあるリンクを教えてください!
ありがとう!