Нулевая обратная ссылка при сопоставлении с двумя экземплярами одного класса - PullRequest
2 голосов
/ 09 декабря 2011

В настоящее время я работаю с Grails 1.3.7, и у меня есть следующие классы домена, связанные парой отношений один к одному:

class Parent {

    Child child1
    Child child2

    static constraints = {}
}

и

class Child {

    static belongsTo = [parent:Parent]

    static constraints = {}
}

В отдельном классе обслуживания у меня есть следующий метод:

def checkParent(child) {
    log.info(child.parent)
}

Наконец, в моем контроллере у меня есть следующий код:

    Parent parent = new Parent()
    parent.child1 = new Child()
    parent.child2 = new Child()
    parent.save(flush:true)
    childService.checkParent(parent.child1)
    childService.checkParent(parent.child2)

Мой вывод журнала показывает, что один из Child объектов всегда имеет нулевую ссылку на parent, тогда как у другого обратная ссылка установлена, как и ожидалось.

Почему это происходит?

1 Ответ

1 голос
/ 10 декабря 2011

класс вашего ребенка должен быть таким:

class Child {
    Parent parent

    static belongsTo = [Parent]
}

и тогда ваш код будет работать. Другое дело, когда у вас есть две ссылки на один и тот же класс домена для разных атрибутов класса домена, вы можете проверить mappedBy .

...