【发布时间】:2013-05-26 15:45:24
【问题描述】:
我正在设置一个搜索功能,以便我找到具有特定技能的用户。
以下是我的用户对象:
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 来完成?请通过发布示例或指向示例链接来帮助我!
谢谢!
【问题讨论】:
标签: hibernate many-to-many hql hibernate-criteria