我正在使用此域类:
@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]
}
如果我想添加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
包。
为什么我的列表为空?它正在为另一个项目工作,只有名称正在改变。可能是我的眼睛遗失了什么......
答案 0 :(得分:0)
对于遇到同样问题的人:将@XmlElementWrapper值(bag)设为null 在我的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
}
希望这会有所帮助