これが私のシナリオです。
inLinks と outLinks の 2 つのリストを持つ NodeElement クラスがあります。
Link クラスには NodeElement への 2 つの参照があり、1 つはソース用、もう 1 つはターゲット用です。
@XmlAccessorType(XmlAccessType.FIELD)
class NodeLement{
    @XmlElement(name="link")
    @XmlElementWrapper
    private List<Link> inLinks = new ArrayList<Link>();
    @XmlElement(name="link")
    @XmlElementWrapper
    private List<Link> outLinks = new ArrayList<Link>();
...
}
@XmlAccessorType(XmlAccessType.FIELD)
class Link{
    @XmlInverseReference(mappedBy="inLinks")
    private NodeElement source;
    @XmlInverseReference(mappedBy="outLinks")
    private NodeElement target;
    public NodeElement getSource() {
        return source;
    }
    public void setSource(NodeElement source) {
        this.source = source;
        this.source.getInLink().add(this);
    }
    public NodeElement getTarget() {
        return target;
    }
    public void setTarget(NodeElement target) {
        this.target = target;
        this.target.getOutLink().add(this);
    }
}
テストクラス
class test {
public static void main(String args[]) throws JAXBException, FileNotFoundException {
    //rootelement
    ContainerElement c = new ContainerElement();
    Link link = new Link();
    NodeElement target = new NodeElement();
    NodeElement source = new NodeElement();
    link.setSource(source);
    link.setTarget(target);
    c.addChild(target);
    c.addChild(source);
    JAXBContext jc = JAXBContext.newInstance(ContainerElement.class);
    Marshaller marshaller = jc.createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    marshaller.marshal(c, new File(XML_MODEL));
}
}
結果 :
    <?xml version="1.0" encoding="UTF-8"?>
<containerElement>
   <ID>427485825424142</ID>
   <inLinks/>
   <outLinks/>
   <children>
      <child xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="NodeElement">
     <ID>427520478709873</ID>
     <inLinks/>
     <outLinks>
        <link xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Link">
           <ID>427582226289815</ID>
        </link>
     </outLinks>
      </child>
      <child xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="NodeElement">
     <ID>427548409900894</ID>
     <inLinks>
        <link xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Link">
           <ID>427582226289815</ID>
        </link>
     </inLinks>
     <outLinks/>
      </child>
   </children>
</containerElement>
明らかに、アンマーシャリング時に Link の 2 つのインスタンスを取得します。それぞれのインスタンスには、ソースまたはターゲットのいずれかが null としてあり、もう一方のターゲット/ソースは正しく設定されています。
アンマーシャリングが正しく初期化された Link のインスタンスを 1 つ提供するようにするには、どうすればこれを修正できますか? ソースとターゲットの関係を解決するためにマーシャルの前後を使用することを考えていましたが、JAXBを学んでいるので、助けていただければ幸いです