我正在尝试使用JAXB解组(XMl - > POJO)一个对象。
XML:
<my_object>
<uniqueName>foo</uniqueName>
<propertyX>blah</propertyX>
</my_object>
Java类:
@XmlRootElement(name="my_object")
class MyObject {
private String uniqueName;
private String propertyX;
// getters, setters omitted
}
解组工作,但在某些情况下,我想让unmarshaller根据uniqueName
使用由我创建的对象。像这样的东西(伪代码):
// parse the uniqueName field first
MyObject template = myObjectDAO.loadByName(uniqueName); // result can be null
if (template == null) {
template = new MyObject();
template.setUniqueName(uniqueName);
}
// carry on with other fields
目前我通过以下方式解决了这个问题:
uniqueName
加载对象并且对象存在 - 使用BeanUtils.copyProperties(unmarshalled, loaded)
复制所有字段。以上工作但不是最佳。
问题:
uniqueName
(解组前),是否可以解决这个问题? P.S。 uniqueName
不是一个标识符(至少在Hibernate方面),因此使用JAXB-Hibernate集成很可能无法正常工作。