使用Hibernate进行多条件搜索

使用Hibernate进行多条件搜索,hibernate,many-to-many,hql,hibernate-criteria,Hibernate,Many To Many,Hql,Hibernate Criteria,我正在设置一个搜索功能,允许我找到具有特定技能的用户 以下是我的用户对象: 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; privat

我正在设置一个搜索功能,允许我找到具有特定技能的用户

以下是我的用户对象:

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表,该表管理用户和技能之间的多对多关系

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();
Query q=session.createQuery(
“以用户身份从用户”+
“与我们一样左加入获取user.userSkills”+
“其中us.skill=13,us.skill=29,us.skill=31”);
list=(ArrayList)q.list();
上述内容不起作用,因为返回的列表始终为空,尽管有用户订阅了id为13、29和31的技能

是否有人可以建议正确的HQL,或者是否应该使用Hibernate标准API来实现?请通过张贴示例或指向示例链接来帮助我


谢谢

尝试更改此行:

where us.skill = 13 AND us.skill = 29 AND us.skill = 31


另外,请删除
=新哈希集(0)

,不幸的是,这没有起作用。我仍在检索一个空列表。
where us.skillId in (13,29,31)