2013-05-07 5 views
0

Как я могу легко справиться с вложенными свойствами в GORM?Простое сохранение или обновление иерархического объекта gorm

Если у меня есть карта свойств, включая вложенные свойства:

def mymap = [ 
    id : '1', 
    name : 'first name', 
    subs : [[ 
     subid : 1, 
     name : 'first sub name' 
    ],[ 
     subid : 2, 
     name : 'second sub name' 
    ]] 
] 

И у меня есть следующие объекты домена:

class Node { 
    int id 
    String name 
    static hasMany = [subs:Sub] 
} 
class Sub { 
    int id 
    String name 
} 

Если создать новый узел с картой

new Node(myMap).save() 

Он жалуется на что-то вроде >> Не удалось преобразовать значение свойства типа 'java.util.ArrayList' до требуемого типа «java.util.Set» для свойства «субмарины»

То же самое касается обновлений, когда я пытаюсь с

node.properties = myMap 
node.save() 

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

+0

Связывание данных не принимает вложенные объекты. –

ответ

0
def mymap = [ 
    id : '1', 
    name : 'first name', 
    subs : [[ 
     subid : 1, 
     name : 'first sub name' 
    ],[ 
     subid : 2, 
     name : 'second sub name' 
    ]] as Set 
] 
+0

Решил проблему с множеством, да, но она возникла, по-видимому, из детской карты. Невозможно добавить сложные типы к карте, так что теперь имеет: сообщение по умолчанию [Не удалось преобразовать значение свойства типа «java.util.LinkedHashSet» в требуемый тип «java.util.Set» для свойства «subs»; nested exception is java.lang.IllegalStateException: Невозможно преобразовать значение типа [java.util.LinkedHashMap] в требуемый тип [Sub for property 'subs [0]': не найдено подходящих редакторов или стратегия конверсии] –

1

Содержимое вашей карты более или менее похоже на некоторые JSON.

Моя первая попытка (если бы она была неудачной из коробки) заключалась в том, чтобы попытаться использовать конвертеры JSON, и если это все еще не удастся, я бы, вероятно, подключил мой маркер JSON для типа Node.

Надеюсь, это поможет

Смежные вопросы