Я испытываю следующее очень странное поведение с запросами Grails GORM ...
ПРИМЕЧАНИЕ. У меня создано 20 экземпляров MyDomain
.Т.е. 20 records
CASE 1
List<MyDomain> case1Results = MyDomain.where {
(isTypeA == true) && (relation1.relation2.relation3.organization == org)
}.list()
В этом случае case1Results
- пустой список.
CASE 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
, как в CASE 2 выше, а не 0 какв СЛУЧАЕ 1
Я не могу обернуться вокруг этого поведения и даже не знаю, как объяснить это, если бы не эти примеры.Кто-нибудь знает, почему это происходит и как это исправить?
PS: Каждый из моих классов доменов имеет статические карты ownTo и hasMany, создающие отношения между классами домена.
PS: Такое поведение наблюдается, когда я запускаю модульные тесты, но хорошо работает в реальной тестируемой функции.