Ваш пример не может работать.
Указание static belongsTo = [dataBlock: DataBlock]
внутри ConfigPreset
означает, что вы не можете создать экземпляр ConfigPreset
без указания владельца DataBlock
.
Так что в основном следующее утверждение
new ConfigPreset()
всегда будет возвращать null
в отличие от
new ConfigPreset(dataBlock: aDataBlock)
, который вернет действительный экземпляр ConfigPreset
.
Метод addToXXX
в основном делает следующее:
- Создать экземпляр XXX (как описано ниже)
- Добавить вновь созданный экземпляр XXX в
this
экземпляр
В вашем случае он не может создать ConfigPreset
(шаг 1), так как экземпляр DataBlock
еще не создан (вы находитесь в конструкторе)
Если вы хотите автоматически связывать ConfigPreset всякий раз, когда вы создаете DataBlock, вы можете сделать это с помощью Gorm Events, добавив callbalck к beforeInsert event.
Или вы можете удалить belongsTo
и new ConfigPreset()
будет работать.