簡體   English   中英

Java休眠標准。 從子類列表中按子類屬性選擇

[英]Java Hibernate Criteria. Select by the subclass property from subclass list

我有三個Java hibernate實體。 而且我想使用hibernate criteria將所有具有特定ID的用戶都選擇在其選擇列表中。

用戶實體:

  @Entity
  @Table(name="users")
  public class User {
      ...
      @ManyToMany
      private List<UserPick> picks = new ArrayList<UserPick>(0);
      ...

UserPick實體:

@Entity
@Table(name="usersPicks")
public class UserPick {
...
  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "fk_user") 
  private User user;

  @ManyToOne
  private MatchPick pick;
  ...

我想獲得所有具有特定pick.id的用戶,例如:

// 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;
}

為我工作。

   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();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM