Впервые здесь и новичок в Grails, у меня странная проблема с отношением один ко многим.
Я создаю приложение Grails для предоставления услуг веб-сайту и приложениям для смартфонов.
Я изо всех сил старался создать родительскую службу, которая может выполнять общие действия (создание, получение, изменение, перечисление, удаление...), из которой Я могу унаследовать более конкретные услуги.
Проблема, с которой я сталкиваюсь, связана с действием списка. Я создаю запрос withCriteria из параметров, которые мне присылают вызывающие абоненты.
У меня два домена:
class A {
static hasMany = [bs:B]
}
class B {
static belongsTo = [a:A]
}
Мне нужно перечислить объекты класса B, принадлежащие объекту A, мое общее действие со списком генерирует это:
List objects = B.withCriteria() {
createAlias("A","A")
eq("A.id", myId)
}
Все работает нормально, но дело в том, что я сделал общий метод toJSON(), который создает ответ JSON из экземпляра домена. Для этого я перебираю список строк, который содержит имена свойств домена, которые я хочу добавить в свой ответ JSON. Затем я получаю к ним доступ следующим образом:
objects[0]."$propertyName"
Если мой объект содержит ссылки на другие объекты, я хочу добавить их идентификаторы в ответ JSON.
Доступ к этим идентификаторам можно получить, используя следующий синтаксис:
objects[0].aId
Но черт возьми, это ноль! Если я получу к нему доступ:
objects[0].a.id
У меня есть правильный идентификатор родителя!
Я сделал несколько тестов, и если я не фильтрую объекты B по объекту A, то я могу получить доступ к родительскому идентификатору так, как хочу, то есть:
List objects = B.withCriteria() {}
objects[0].aId
Есть идеи, что здесь происходит?
Спасибо.