gpt4 book ai didi

java - moxy jaxb @XmlID 和继承

转载 作者:行者123 更新时间:2023-11-30 11:52:18 26 4
gpt4 key购买 nike

我有以下层次结构:

public class Small {
private String xmlId;

@XmlID
@XmlAttribute
public String getXmlId() {
if (xmlId == null)
xmlId = "small" + new Random().nextInt();
return xmlId;
}

public void setXmlId(String id) {
this.xmlId = id;
}
}

public class Big extends Small {
// Code
}

我试图编码 Baz 类的地方:

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Baz {
private List<Small> smalls = new LinkedList<Small>();

private Small small;
private Big big;

@XmlIDREF
public Small getSmall() {
return small;
}

public void setSmall(Small small) {
this.small = small;
}

@XmlIDREF
public Big getBig() {
return big;
}

public void setBig(Big big) {
this.big = big;
}

@XmlElementWrapper(name = "smalls")
@XmlElement(name = "small")
public List<Small> getSmalls() {
return smalls;
}

public void setSmalls(List<Small> smalls) {
this.smalls = smalls;
}
}

我正在使用以下测试代码:

public class Test2 {
public static void main(String[] args) throws Exception {
Small s1 = new Small();
Small s2 = new Small();
Big b1 = new Big();

List<Small> smalls = new LinkedList<Small>();
smalls.add(s1);
smalls.add(s2);
smalls.add(b1);

Baz baz = new Baz();
baz.setSmalls(smalls);
baz.setSmall(s2);
baz.setBig(b1);

JAXBContext jc = JAXBContext.newInstance(Baz.class);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(baz, System.out);
}
}

不幸的是,在执行编码(marshal)时,我遇到了以下异常:

Exception in thread "main" javax.xml.bind.JAXBException: 
Exception Description: Invalid XmlIDREF on property [big]. Class [test.moxy.Big] is required to have a property annotated with XmlID.

我希望 Big 类继承 XmlID 注释。我尝试在 Big 类中添加“另一个”@XmlID 注释,这修复了编码问题。然而,这在生成 XML 架构时会导致另一个问题,该架构现在将包含两个 ID 属性,这是不允许的。

我做错了什么吗?

最佳答案

您看到的行为是一个错误 (https://bugs.eclipse.org/353787)。我们已经 checkin 了对 EclipseLink 2.3.1 和 2.4.0 流的修复,从 2011 年 8 月 4 日开始,我们的夜间下载页面将提供这些修复:

关于java - moxy jaxb @XmlID 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com