이 작업을 수행하는 간단한 방법이 있어야한다는 것을 알고 있지만, 지금은 나에게 오지 않습니다. 나는 두 개 이상의 플래그와 함께 모든 승인되지 않은 검토를 찾아 쿼리를 실행하려면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 개 이상의 플래그가있는 것만 찾는 데 필요한 마법 호출은 무엇입니까?