如何使用HQL选择给定列表中所有项目的行

时间:2016-06-27 07:10:19

标签: hibernate hql

我有两张桌子:

public class User  {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;

    // ... other fields and Getter / Setter methods
}

public class Group{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;

    @ManyToMany
    @JoinTable(name = "group_user", joinColumns = { @JoinColumn(name = "group_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
    private List<User> users;

    // ... other fields and Getter / Setter methods
}

我想选择所有给定用户所在的群组。

例如,现在我有3组:

  1. 用户ID:1,3,5,7,9
  2. 用户ID:2,4,5,7
  3. 用户ID:5,9
  4. 我想选择用户5 用户7 所在的群组。(结果应为群组1 2

1 个答案:

答案 0 :(得分:0)

试试这个,看它是否有效。

Query query = session.createQuery("from Group g join g.users u where u.id in (:ids) ").setParameter("ids", ids); // ids is a list containing the user IDs
List<Group> groups = query.list();