我想创建一个QueryDSL查询,该查询检查对象A的列表(listA,包含B的多个对象)是否包含由不同列表(providedList)提供的任何对象B.如果提供列表中的 ANY 对象B也出现在listA中,我不想返回对象A.
到目前为止我所拥有的:
return query.from(objA).where(objA.listA.any().notIn(providedList)).list(objA);
但是,目前,selectedList中的所有项目都不在listA中,以便工作。有没有办法让这项工作?
感谢您的帮助!
答案 0 :(得分:0)
您正在执行的查询将过滤 objA 表中的所有行。当您应用过滤器时,您只显示与该列表中提供的任何项目都不匹配的所有行。
如果匹配时不返回任何内容,则应先检查是否有与该提供列表匹配的行,例如计数。
return query.from(objA).where(objA.listA.in(providedList)).list(objA.count());
如果objA.count()大于0,则该方法不应返回任何内容,如果为0,则可以正常运行查询而不使用任何过滤器。