假设我有以下两个类:
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实现一样。
答案 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;
}