#java #hibernate #querydsl
#java #спящий режим #querydsl
Вопрос:
Предположим, у меня есть Appointment
таблица и Person
таблица, где an Appointment
имеет много Person
s .
Если бы я хотел найти все встречи, содержащие хотя бы одного человека в моем списке, я бы сделал:
Collection<Person> personsList = getInterestedPersons();
BooleanExpresssion expr = appointment.persons.any().in(personsList)
Однако, чего я действительно хочу, так это найти все встречи, в которых есть ВСЕ люди в моем списке.
Итак, как я могу создать a BooleanExpression
, который позволит мне фильтровать все встречи, в которых есть все лица?
Примечание: я должен создать BooleanExprsesion , потому что это часть более крупного универсального фильтра для назначений, где все логические выражения получают и() редактируются вместе.
Еще одно замечание: я не знаю, как найти встречи, в которых есть только эти люди, по крайней мере, все те, что в списке.
Ответ №1:
В этом случае, я думаю, должно сработать следующее:
BooleanBuilder personClause = new BooleanBuilder();
for (Person person : personList)
{
personClause.and(appointment.persons.contains(person));
}
query.where(personClause); // to add the clause