Grails 轻松保存或更新分层对象gorm
如何轻松处理GORM中的嵌套属性 如果我有一个包含嵌套属性的属性映射:Grails 轻松保存或更新分层对象gorm,grails,gorm,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
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()
我无法自动执行此操作,但必须手动遍历它吗?您的地图内容看起来或多或少像一些JSON
def mymap = [
id : '1',
name : 'first name',
subs : [[
subid : 1,
name : 'first sub name'
],[
subid : 2,
name : 'second sub name'
]] as Set
]
我的第一次尝试(如果失败了)是尝试使用JSON转换器,如果仍然失败,我可能会为节点类型钩住JSON封送器。确实解决了设置问题,是的,但它显然源于子映射。无法向映射中添加复杂类型,因此现在有:默认消息[未能将属性'subs'的类型'java.util.LinkedHashSet'的属性值转换为所需类型'java.util.Set';嵌套异常为java.lang.IllegalStateException:无法将类型[java.util.LinkedHashMap]的值转换为所需类型[Sub for property'subs[0]“:未找到匹配的编辑器或转换策略]数据绑定不接受嵌套对象。