我在Grails GORM查询中遇到以下非常奇怪的行为...
注意:我创建了20个MyDomain
实例。即20 records
案例1
List<MyDomain> case1Results = MyDomain.where {
(isTypeA == true) && (relation1.relation2.relation3.organization == org)
}.list()
在这种情况下,case1Results
是一个空列表。
案例2
List<MyDomain> case2Results = MyDomain.where {
(isTypeA == true)
}.list()
在这种情况下,case2Results
包含我存储的20 records
。
这一切似乎都可以找到了。这表明20条记录与organization
没有关联。但是...
问题:
当我带着case2Results
并执行以下操作时...
println(case2Results.every {
it.relation1.relation2.relation3.organization == org
}) //true
我得到true
或:
case2Results = case2Results.findAll{
it.relation1.relation2.relation3.organization == org
}
在这里,case2Results
仍然包含20 records
,如上面的案例2 一样,而不是0,如案例1
我无法解决这种问题,如果不通过这些示例,我什至不知道该如何解释。有谁知道为什么会这样以及如何解决?
PS:我的每个域类都有一个belongsTo和hasMan静态映射,从而在这些域类之间创建关系。
PS::运行单元测试时会遇到这种现象,但是在实际测试的功能中效果很好。