У меня есть следующий класс доменов с самостоятельной ссылкой:
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")
}
И хотя я могу просто игнорировать детей, которые также являются родителями, почему я так странно себя веду?