[英]With QueryDSL, how do you create an expression on a collection where the sub-items match all criteria?
假设我有一个Appointment
表和一个Person
表,其中Appointment
有很多Person
。
如果我想查找列表中至少包含一个人的所有约会,我将执行以下操作:
Collection<Person> personsList = getInterestedPersons();
BooleanExpresssion expr = appointment.persons.any().in(personsList)
但是,我真正想要的是找到所有具有我列表中所有人员的约会。
因此,我该如何构造一个BooleanExpression
,以便让我过滤所有拥有所有Persons的约会?
注意:我必须创建一个BooleanExprsesion,因为这是较大的约会通用过滤器的一部分,所有BooleanExpression都将and()在一起。
另一个要注意的是,我没有找到仅具有这些人员( 至少包括列表中所有人员)的约会的内容。
在这种情况下,我想以下应该起作用:
BooleanBuilder personClause = new BooleanBuilder();
for (Person person : personList)
{
personClause.and(appointment.persons.contains(person));
}
query.where(personClause); // to add the clause
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.