2016-09-30 3 views
1

Appointment 테이블과 Person 테이블이 있다고 가정합니다. 여기서 AppointmentPerson입니다. 내가 할 것이 내 목록에 적어도 하나의 사람을 포함하는 모든 약속 발견하고 싶었다면QueryDSL을 사용하면 하위 항목이 모든 조건과 일치하는 모음에서 식을 어떻게 만듭니 까?

: 정말 원하는 것을 그러나

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

는에 그래서 모든 사람의이 모든 약속을 찾을 수 있습니다 나의 목록.

그렇다면 모든 사람이있는 모든 약속에 필터를 적용 할 수있는 을 어떻게 구성 할 수 있습니까?

참고 : BooleanExprions는 모든 부울식이 함께 가져오고 함께있는 약속의 더 큰 일반 필터의 일부이기 때문에 만들어야합니다.

또 다른 참고, 나는 목록에있는 그냥 적어도 모든에서 그 사람이 약속을 찾을 수없는 것.

이 경우

답변

1

, 나는 다음과 같은 일을해야 같아요

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