2016-09-30 4 views
1

私はAppointmentテーブルとPersonテーブルを持っているとします。Appointmentは多く、Personです。QueryDSLでは、サブアイテムがすべての条件に一致するコレクションにどのように式を作成しますか?

私は、私はどうしたら私のリストで少なくとも一つ人を含むすべての予定検索したい場合:私は本当にそうですべての人を持っているすべての予定を探しているしたいのか、しかし

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

を私のリスト。

したがって、すべてのPersonを持つすべての予定に対してフィルタリングできるようにするには、どのようにしてBooleanExpressionを構築できますか?

注:これは、すべてのBooleanExpressionsが一緒に取得され、一緒に処理されるAppointmentsのより大きな汎用フィルタの一部であるため、BooleanExprsesionを作成する必要があります。

別のノートで、私は少なくともすべてリストのものでだけそれらの人を持って予定を、見つけるために、何をしません。この場合

答えて

1

、私は次のように動作する必要がありますね:

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