GIL-запрос Grails для нулевой ассоциации hasOne завершается неудачно
Я использую Grails 2.2.4 (такое же поведение в Grails 2.3.11) и имею класс домена A, который ссылается на класс домена B
class A {
static hasOne = [b: B]
static constraints = { b nullable: true }
}
class B {
static belongsTo = [a: A]
}
Я пытаюсь найти все экземпляры A, которые имеют B.
A.findAllByBIsNotNull()*.b
возвращает список Bs и нулей:
[null, null, b1, b2, null, ...]
Как так?
То же самое происходит, если я использую
A.withCriteria {
isNotNull 'b'
}*.b
Что я делаю не так?
ОБНОВИТЬ:
Я понял, что проблема из-заhasOne
, Если вместоstatic hasOne = [b: B]
, естьB b
, оно работает. Первый перемещает внешний ключ в таблицу B, второй создает отношение внешнего ключа в таблице A. Так почему запрос не работает в первом случае и как я могу запросить всеA
с, не имеяB
когда внешний ключ находится внутри B?