Я новичок в использовании Ebean и мне нужна помощь в написании запроса. Для справки я использую Ebean 3.2 с Postgres.
. Сейчас у меня есть модель оповещения, которая определяется следующим образом:
@Entity
public class Alert extends Model {
@Id
public long id;
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "alert_account", joinColumns = @JoinColumn(name = "alert_id"), inverseJoinColumns = @JoinColumn(name = "account_id"))
private List<Account> accounts;
//...
}
Существует множество ко многим отношения между оповещениями и аккаунтами. Предупреждение может содержать несколько учетных записей.
Я хотел написать запрос, в котором были бы найдены все предупреждения, учетные записи которых являются исключительно подмножеством другого списка учетных записей.
Возьмите следующий пример :
Предупреждение № 1 имеет учетные записи [#a, #b, #c].
Предупреждение № 2 имеет учетные записи [#b, #c].
Предупреждение # 3 имеет учетные записи [#b].
Предупреждение № 4 имеет учетные записи [#a].
Мой список учетных записей: [#b, #c]
Я хочу запрос на возврат Alert # 2 и Alert # 3, так как они содержат учетные записи, которые являются исключительно подмножеством списка учетных записей [#b, #c]
Я экспериментировал со следующим, но это возвращенные оповещения, учетные записи которых совпадают с любыми учетными записями в списке подмножеств.
List<Account> accountSubset = //...
return Alert.find.where().in("accounts", accountSubset).findList();
Чтобы уточнить, приведенный выше запрос имеет следующее поведение:
Возьмите следующий пример:
Предупреждение № 1 имеет учетные записи [#a, #b, #c].
Предупреждение № 2 имеет учетные записи [#b, #c].
Предупреждение № 3 имеет учетные записи [#b ].
Предупреждение № 4 получено nts [#a].
Мой список учетных записей: [#b, #c]
Уведомление № 1, Предупреждение № 2 и Предупреждение № 3 будут выбраны, так как они содержат учетные записи, которые соответствует любой из учетных записей в списке учетных записей [#b, #c].
Любая помощь очень ценится! Я бы предпочел выполнить фильтрацию на уровне доступа к данным, но я открыт для других предложений.