轻松保存或更新分层对象gorm

时间:2013-05-07 12:49:10

标签: grails 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'的属性值转换为属性'subs'所需的类型'java.util.Set'

当我尝试使用

时更新也是如此
node.properties = myMap
node.save()

我无法自动执行此操作但必须手动遍历吗?

2 个答案:

答案 0 :(得分:1)

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

我的第一次尝试(如果它没有开箱即用)将尝试使用JSON转换器,如果仍然失败,我可能会为节点类型挂钩我的JSON编组器。

希望有所帮助

答案 1 :(得分:0)

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