我正在使用这个域类:
@XmlRootElement(name="Target")
@XmlAccessorType(XmlAccessType.NONE )
class TargetElement {
static constraints = {
testPurpose()
}
@XmlAttribute(name="TestPurpose")
String testPurpose
// instead of bellow in comment use this
@XmlElementWrapper(name = "Bag")
@XmlElement(name="Child")
List<Child> bag= new ArrayList<Child>()
// 1..n Child
static hasMany = [child:Child]
}
如果我想添加儿童 elem,我使用
def target = new TargetElement(testPurpose:"TestPurpose")
target.getBag().add(child)
target.save(flush:true)
if (target.hasErrors()){
println '3 ***********' + target.errors
}
但我list == null
包。
为什么我的列表为空?它正在为另一个项目工作,只有名称正在更改。可能是我的眼睛少了点什么...
对于谁遇到同样的麻烦:将@XmlElementWrapper值(bag)变为空在我的 Bootstrap.groovy.我必须声明:
ArrayList<Child> bag = new ArrayList<Child>()
bag.add(child1)
bag.add(child2)
targetElement.getBag().addAll(bag)
我也遇到了另一个问题,即 GROM 延迟加载和 JAXB。检查是否检索了嵌套的对象:例如:
static mapping = {
nested lazy: false
}
希望这会有所帮助