2013-05-07 71 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

数据绑定不采用嵌套对象。 – 2013-05-07 17:29:36

回答

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

确实解决了设置问题,但是它起源于儿童地图。无法将复杂类型添加到映射中,因此现在具有:default消息[无法将属性'java.util.LinkedHashSet'的属性值转换为属性'subs'所需的类型'java.util.Set';嵌套的异常是java.lang.IllegalStateException:无法将[java.util.LinkedHashMap]类型的值转换为所需的类型[Sub for property'subs [0]':未找到匹配的编辑器或转换策略] – 2013-05-07 13:11:45

1

您的地图内容看起来或多或少像一些JSON。

我第一次尝试(如果它失败了)将尝试使用JSON转换器,如果仍然失败,我可能会挂钩我的JSON编组为Node类型。

希望它有帮助