在 Spring Boot 数据项目中,我们常常使用 Specifications 来动态构建查询条件。然而,当我们尝试根据子实体的多个属性进行过滤时,可能会遇到一些意想不到的问题。以下是一篇探讨如何解决这些问题并提供解决方案的博客。问题描述假设我们有两个实体,ParentEntity和ChildEntity,它们之间存在一对多(1-*)的关系。我们希望根据ChildEntity的两个布尔属性foo和baa来查询ParentEntity,并且这些搜索条件可能是空的(即忽略)。在简单的场景下,比如只有一个子实体匹配,查询能够正常工作。但如果有多个子实体,其中只有部分属性匹配,查询会返回不正确的结果。示例ParentEntity:achild1: foo = true, baa = falsechild2: foo = false, baa = truebchild1: foo = false, baa = falsecchild1: foo = true, baa = true如果我们查询 `foo = true` 和