В JPQL, как найти все P-записи, где каждый P включает подмножество C-записей в отношении многие ко многим - PullRequest
0 голосов
/ 26 июня 2019

У меня есть два постоянных типа (Provider и Процедурный код), которые имеют отношение многие ко многим.Я хочу найти все экземпляры провайдера, чей набор процедурных кодов содержит один или несколько процедурных кодов в списке.

Я пытался выполнить:

SELECT c.providers FROM ProcedureCode c WHERE c IN :procedures

В результате должен быть набор провайдеров, чьиПроцедура содержит все указанные процедуры.Но это возвращает всех провайдеров, которые предоставляют хотя бы один элемент в: процедуры.

Моими объектами модели являются:

public class Provider implements GeoLocation, Serializable {
    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "ProviderProcedures", joinColumns = @JoinColumn(name = "ProviderId"), inverseJoinColumns = @JoinColumn(name = "ProcedureId"))
    private Set<ProcedureCode> procedures = new HashSet<>();
}

public class ProcedureCode implements Serializable {
    @ManyToMany(mappedBy = "procedures", fetch = FetchType.LAZY)
    private Set<Provider> providers = new HashSet<>();
}
...