[英]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.