Java Hibernate标准。从子类列表中按子类属性选择

Java Hibernate标准。从子类列表中按子类属性选择,java,hibernate,Java,Hibernate,我有三个Javahibernate实体。我想使用hibernate标准获取所有在其picks列表中具有特定id的pick用户 用户实体: @Entity @Table(name="users") public class User { ... @ManyToMany private List<UserPick> picks = new ArrayList<UserPick>(0); ... 我希望获得所有具有特

我有三个
Java
hibernate
实体。我想使用
hibernate标准
获取所有在其picks列表中具有特定id的pick用户

用户实体:

  @Entity
  @Table(name="users")
  public class User {
      ...
      @ManyToMany
      private List<UserPick> picks = new ArrayList<UserPick>(0);
      ...
我希望获得所有具有特定pick.id pick的用户,如:

// return all users if exist pick with pickId in picks list
public List<User> getUsersByPick(int pickId) {
    Criteria criteria = session.createCriteria(User.class);
    criteria... //
    return criteria.list();
}

// Goal is get target but using Hibernate criteries
public List<User> getUsersByPick(int pickId) {
    Criteria criteria = session.createCriteria(User.class);
    List<User> users = criteria.list();
    List<User> target = new List<>();

    for(User u:users)
       for(UserPick p:u.getPicks())
         if(p.getId == pickId)target.add(u);

    return target;
}
//如果存在,则返回所有用户,并在picks列表中使用pickId进行pick
公共列表getUsersByPick(int-pickId){
条件=session.createCriteria(User.class);
标准//
返回条件。list();
}
//目标是获取目标,但使用Hibernate标准
公共列表getUsersByPick(int-pickId){
条件=session.createCriteria(User.class);
列表用户=criteria.List();
列表目标=新列表();
for(用户u:用户)
for(UserPick p:u.getPicks())
if(p.getId==pickId)target.add(u);
回报目标;
}
为我工作

   public List<User> getUsersByPick(int pickId) {
        Criteria criteria = session.createCriteria(User.class)
        .createCriteria("userPicks", "picks")
        .createCriteria("pick", "pick")
        .add( Restrictions.eq("pick.id",pickId) );
        return criteria.list();
    }
public List getUsersByPick(int-pickId){
条件=session.createCriteria(User.class)
.createCriteria(“用户选择”、“选择”)
.createCriteria(“拾取”、“拾取”)
.add(Restrictions.eq(“pick.id”,pick.id));
返回条件。list();
}

我希望从数据库中获取所有用户,例如id为2的pick。我们知道这一点。但是你试过什么?这不是免费平台的get代码。我试着阅读了一些关于alias的内容,但我需要知道,或者它是正确的方向性的,因为它是正确的FireAction
   public List<User> getUsersByPick(int pickId) {
        Criteria criteria = session.createCriteria(User.class)
        .createCriteria("userPicks", "picks")
        .createCriteria("pick", "pick")
        .add( Restrictions.eq("pick.id",pickId) );
        return criteria.list();
    }