2016-09-30 31 views
1

假設我有一個Appointment表和Person表,其中Appointment有許多Person s。使用QueryDSL,如何在子項匹配所有條件的集合上創建表達式?

如果我想找到包含至少一個人在我的列表中的所有約會,我會做:

Collection<Person> personsList = getInterestedPersons(); 
BooleanExpresssion expr = appointment.persons.any().in(personsList) 

不過,我真的想這樣的發現,都在人的所有約會我的列表。

那麼,我怎樣才能構建一個BooleanExpression,讓我過濾所有人的約會?

注意:我必須創建一個BooleanExprses,因爲它是Appointments的一個更大的通用篩選器的一部分,其中所有的BooleanExpressions都是和()編輯在一起的。

另要注意,我沒有什麼發現有只有這些人約會,只是在至少所有那些在列表中。

回答

1

在這種情況下,我想下面應該工作:

BooleanBuilder personClause = new BooleanBuilder(); 
for (Person person : personList) 
{ 
    personClause.and(appointment.persons.contains(person)); 
} 
query.where(personClause); // to add the clause 
相關問題