繁体   English   中英

解组错误Jaxb-“类没有默认的无参数构造函数”,而有默认的无参数构造函数

[英]Unmarshalling Error Jaxb - “Class does not have a default no arg constructor” while having a default no args constructor

我试图解组以下XML,但遇到异常:“ 1个IllegalAnnotationExceptions EntityVersionInfo计数没有无参默认构造函数。” 尽管实际上没有args构造函数。 我想念什么?

XML:

<topLevelObject>
  <entityVersionInfo>
        <id>111111</id>
        <version>1</version>
  </entityVersionInfo>
</topLevelObject>

Java中带注释的实体:

TopLevelObject:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "topLevelObject")

public class TopLevelObject {

    @XmlElement(name = "entityVersionInfo")
    private EntityVersionInfo versionInfo;

    public TopLevelObject() {
        //no args constructor
    }

    //GETTERS AND SETTERS HERE...
}

EntityVersionInfo:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "entityVersionInfo")

public class EntityVersionInfo {
    @XmlElement(name = "id")
    private String id;

    @XmlElement(name = "version")
    private String version;

    public EntityVersionInfo() {
        //no arg constructor
    }

    //GETTERS AND SETTERS
}

将此添加到EntityVersionInfo

@Override
public String toString() {
    return "EntityVersionInfo [id=" + id + ", version=" + version + "]";
}

将此添加到TopLevelObject

@Override
public String toString() {
    return "TopLevelObject [versionInfo=" + versionInfo + "]";
}

运行此测试,我得到:

    JAXBContext context = JAXBContext.newInstance(TopLevelObject.class);
    Unmarshaller u = context.createUnmarshaller();

    Reader reader = new StringReader(
            "<topLevelObject>\r\n" + 
            "  <entityVersionInfo>\r\n" + 
            "        <id>111111</id>\r\n" + 
            "        <version>1</version>\r\n" + 
            "  </entityVersionInfo>\r\n" + 
            "</topLevelObject>");
    Object o = u.unmarshal(new InputSource(reader ));
    System.out.println(o);

我得到:

TopLevelObject [versionInfo=EntityVersionInfo [id=111111, version=1]]

因此,您的实体代码很好,也许您的项目中有一个以上的EntityVersionInfo类或其他类,但是实体很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM