java - 使用 QueryDSL,如何在子项匹配所有条件的集合上创建表达式?

标签 java hibernate querydsl

假设我有一个 Appointment 表和一个 Person 表,其中一个 Appointment 有许多 Person

如果我想查找列表中包含至少一个人员的所有约会,我会这样做:

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

但是,我真正想要的是找到包含我列表中所有人员的所有约会。

那么,我如何构造一个 BooleanExpression 来过滤拥有所有人员的所有约会?

注意:我必须创建一个 BooleanExprsesion,因为这是约会的更大通用过滤器的一部分,其中所有 BooleanExpression 都通过 and() 组合在一起。

另一个注意事项,我不知道如何找到那些人的约会,至少至少列表中的所有人。

最佳答案

在这种情况下,我想以下应该有效:

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

关于java - 使用 QueryDSL,如何在子项匹配所有条件的集合上创建表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791159/

相关文章:

java - date.compare() 不起作用

java - QueryDSL JPA 和 PostgreSQL 的集合查询问题

java - 未找到 maven 包类 selenium Web 驱动程序

java - 如果所有属性都是键的一部分,为什么 hibernate 的 getPropertyNames 返回一个空列表?

java - 将货币值存储为 Doubles 但使用 BigDecimal 计算值

java - JPa/hibernate/JUnit : How to use a proper method of reflection in the ToString?

java - Lombok + QueryDsl + Mapstruct : error compiling: java. lang.NoClassDefFoundError : javax/persistence/Entity: javax. persistence.Entity

java - 常量解释为 QueryDSL 中的表达式

java - Spring Rest Controller 不适用于文件上传

java - SQlite 数据库文件未加载