根据Groovy中的实例变量条件查找列表中的所有元素

时间:2016-01-20 17:23:15

标签: grails groovy

对于这种情况

class A {
    List<B> bList
}

class B {
    Long chainId
}

如果chainId存在于chainIdList中,我试图从类型A的实例中获取类型B的项目。当我使用

a.bList*.find { chainIdList.contains(it.chainId) }

我收到错误:查询未返回唯一结果:4。 在我看来,不是groovy方法'find',而是调用Grails GORM方法,所以我从A数据库中为A中的每个2 B元素获取B类型的所有行(目前为4)。 有什么建议/见解吗?

1 个答案:

答案 0 :(得分:0)

您在列表中的每个元素上调用find,而不是在列表本身上调用

删除*,即。

a.bList.find { chainIdList.contains(it.chainId) }

或者找到所有匹配的元素

a.bList.findAll { chainIdList.contains(it.chainId) }