Странное поведение при самостоятельной ссылке на объекты в Grails и Mongodb - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующий класс доменов с самостоятельной ссылкой:

package com.test

import org.bson.types.ObjectId

class Category {
    ObjectId id
    String name
    Category parent = null
    static hasMany = [childs: Category]
    static mappedBy  = [ childs: 'childs' ]
}

Затем я создаю 2 объекта «Категория», где 2-й объект становится дочерним по отношению к первому, например:

def c1 = Category.findByName('category1') ?: new Category(name: 'category1').save(failOnError: true)
def c2 = Category.findByName('category2') ?: new Category(name: 'category2', parent: c1).save(failOnError: true)
c1.addToChilds(c2).save(failOnError: true)

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

{
    "_id" : ObjectId("5b8d0ba306425e3ee4ff5cf9"),
    "name" : "category1",
    "version" : NumberLong(0),
    "childs" : [ 
        ObjectId("5b8d0ba306425e3ee4ff5cfa")
    ]
}

{
    "_id" : ObjectId("5b8d0ba306425e3ee4ff5cfa"),
    "name" : "category2",
    "version" : NumberLong(0),
    "childs" : [ 
        ObjectId("5b8d0ba306425e3ee4ff5cf9")
    ],
    "parent" : ObjectId("5b8d0ba306425e3ee4ff5cf9")
}

И хотя я могу просто игнорировать детей, которые также являются родителями, почему я так странно себя веду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...