未引用的静态内部类由MOXy和RI以不同方式处理

时间:2012-03-14 23:37:23

标签: java jaxb eclipselink moxy

假设我有以下两个类:

package example.model;

public class Model {
    public static class Inner {}

    public Other prop;
}

package example.model;

public class Other {
    public static class Inner {}

    public String prop;
}

我用JAXBContext.newInstance(example.model.Model.class)创建了一个JAXB上下文。

使用Java 6的默认JAXB实现,这可以在没有任何注释的情况下工作,并且生成的模型不提及“inner”。使用EclipseLink我得到一个“名称冲突。两个类的XML类型带有uri,名称为inner。”

我知道至少要创建一个内部类@XmlTransient可以解决问题。我想知道的是这种差异与JAXB标准有何关系, 而且,我想,如果还有其他方法可以使MOXy忽略这些类,就像默认的JAXB实现一样。

1 个答案:

答案 0 :(得分:2)

这似乎是EclipseLink JAXB (MOXy)中的错误。我们目前正在研究EclipseLink 2.3.3和2.4.0流的修复程序。您可以使用以下链接跟踪我们的进度:

一旦修复程序可用,您就可以从以下链接下载每晚构建:

解决方法

如您所述,您可以使用@XmlTransient标记静态内部类。

package example.model;

public class Model {
    @XmlTransient        
    public static class Inner {}

    public Other prop;
}