我知道必須有一種簡單的方法來做到這一點,但目前它並沒有提供給我。我有一個簡單的實體一樣(爲了簡潔去除不相關部分):EJBQL - 查找所有具有超過'x'關係的行
@Entity
@Table(name = "reviews")
public class Review {
private String text;
private boolean approved;
private Collection<ReviewFlag> flags;
public Review() {
this.text = null;
this.approved = false;
this.flags = Collections.emptyList();
}
@Column(nullable = false)
public String getText() {
return text;
}
@Column(nullable = false)
public boolean isApproved() {
return approved;
}
@OneToMany(mappedBy="review")
public Collection<ReviewFlag> getFlags() {
return flags;
}
}
我希望運行發現每一個未經批准的審查,兩個或兩個以上標誌的查詢。喜歡的東西:
SELECT r FROM Review r WHERE r.approved = 0 AND COUNT(r.flags) > 1
...但當然是語法不工作(休眠抱怨語法)。我試過它:
SELECT r FROM Review r WHERE r.approved = 0 HAVING COUNT(r.flags) > 1
...一個運行,但也返回有0或1標誌的評論。我需要使用什麼魔法調用才能找到帶有2個或更多標誌的魔法調用?