Kotlin,伴随对象和JAXB

时间:2018-11-13 07:15:04

标签: kotlin jaxb

免责声明:下面的类Status仅用于显示我在其他地方遇到的“真实”问题。 :)

假设我有以下Kotlin课:

@XmlRootElement(name = "Status")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = ["id", "status"])
class Status(val id: Int, val status: String) {

    private constructor() : this(id = -1, status = "")

    companion object {
        private var id: Int? = null
    }
}

如果我尝试通过实例化JAXB

JAXBContext.newInstance(Status::class.java)

我收到以下异常:

  

[Exception [EclipseLink-50013](Eclipse Persistence Services-2.7.1.v20171221-bd47e8f):org.eclipse.persistence.exceptions.JAXBException   异常描述:必需将类nu.westlin.kotlin.jaxb.Status上的属性或字段id $ 1包含在XmlType批注的propOrder元素中。       在org.eclipse.persistence.jaxb.JAXBContext $ TypeMappingInfoInput.createContextState(JAXBContext.java:1161)       在org.eclipse.persistence.jaxb.JAXBContext。(JAXBContext.java:196)       在org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:165)       在org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:152)       在org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:112)       在org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:102)       在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处       在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)       在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       在java.lang.reflect.Method.invoke(Method.java:498)       在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)       在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)       在javax.xml.bind.ContextFinder.find(ContextFinder.java:441)       在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)       在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)

我使用org.eclipse.persistence:org.eclipse.persistence.moxy:2.7.1。

如果我将compainon对象中的字段id重命名为id2,则它可以工作,并且当我编组一个对象时,我会得到预期的XML。

如何让JAXB / Moxy忽略同对象中同名对象的字段?

我尝试了@XmlTransient,但没有成功。

0 个答案:

没有答案