2

特定のスキルを持つユーザーを検索できるように検索機能を設定しています。

以下は私のユーザーオブジェクトです:

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 を使用してこれを行う必要があるかどうかを教えてください。例を投稿するか、例のあるリンクを教えてください!

ありがとう!

4

1 に答える 1