Dear all,
I have a problem with jaxb 1.x and id/idref and circularity.
for example, i would like to describe a family which is composed from
parent and children.
Parents have an idref to their children.
Child have an idref to their parents.
I have no problem to unmarshall, but i can't marshall.
Because it seems that jaxb is lost with the fact that a parent contains
a ref to a child, which contains a ref to it parent....
How can I solve my problem?
Do I have to add some customization to schema?
I am working on a more complicated schema dealing with protein, gene
object...
Thanks a lot.
Francois, from Paris, France
=========
xsd
==========
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 sp1 U (
http://www.xmlspy.com) by GENOSCOPE
(GENOSCOPE) -->
<xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="test">
<xs:annotation>
<xs:documentation>Comment describing your root
element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="parents" type="Parent" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="children" type="Child" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Parent">
<xs:sequence>
<xs:element name="childrens" type="xs:IDREF" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="Child">
<xs:sequence>
<xs:element name="parents" type="xs:IDREF" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:schema>
============
xml
===========
<?xml version="1.0" encoding="UTF-8"?>
<?jaxfront version=1.60;time=2006-01-25 11:37:32.765;xsd=test.xsd?>
<test xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<parents id="p1" name="papa">
<childrens>c1</childrens>
<childrens>c2</childrens>
</parents>
<parents id="p2" name="maman">
<childrens>c2</childrens>
</parents>
<children id="c1" name="paul">
<parents>p1</parents>
</children>
<children id="c2" name="chloe">
<parents>p1</parents>
<parents>p2</parents>
</children>
</test>
Error message
===========
Exception in thread "main" java.lang.StackOverflowError
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ChildImpl.hashCode(ChildImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)
at com.sun.xml.bind.util.ProxyListImpl.hashCode(ProxyListImpl.java:224)
at generated.impl.ParentImpl.hashCode(ParentImpl.java:230)
at java.util.AbstractList.hashCode(AbstractList.java:630)