Skip Headers

# XML Composite Collection Mapping

Previous

Next

Use XML composite collection mappings to represent one-to-many relationships. Composite collection XML mappings can reference any class that has a TopLink descriptor. The attribute in the object mapped must implement either the Java `Collection` interface (for example, `Vector` or `HashSet`) or `Map` interface (for example, `Hashtable` or `TreeMap`). The `CompositeCollectionMapping` class allows a reference to the mapped class and the indexing type for that class.

Given the XML schema in Example: Schema for XML Composite Collection Mapping, Figure: XML Composite Collection Mapping illustrates an XML composite collection mapping to different elements by position in a corresponding XML document. Example: Java for XML Composite Collection Mapping for a Collection Attribute shows how to configure this mapping in Java for a `Collection` attribute and Example: Java for XML Composite Collection Mapping for a Map Attribute shows how to configure this mapping in Java for a `Map` attribute.

Schema for XML Composite Collection Mapping

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <xsd:element name="customer" type="customer-type"/>
        <xsd:complexType name="customer-type">
            <xsd:sequence>
                <xsd:element name="first-name" type="xsd:string"/>
                <xsd:element name="last-name" type="xsd:string"/>
                <xsd:element name="phone-number">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="number" type="xsd:string"/>
                        </xsd:sequence>
                        <xsd:attribute name="type" type="xsd:string"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:schema>

XML Composite Collection Mapping

Description of "XML Composite Collection Mapping"

Java for XML Composite Collection Mapping for a Collection Attribute

    XMLCompositeCollectionMapping phoneNumbersMapping = new XMLCompositeCollectionMapping();
    phoneNumbersMapping.setAttributeName("phoneNumbers");
    phoneNumbersMapping.setXPath("phone-number");
    phoneNumbersMapping.setReferenceClass(PhoneNumber.class);

Java for XML Composite Collection Mapping for a Map Attribute

    XMLCompositeCollectionMapping phoneNumbersMapping = new XMLCompositeCollectionMapping();
    phoneNumbersMapping.setAttributeName("phoneNumbers");
    phoneNumbersMapping.setXPath("phone-number");
    phoneNumbersMapping.setReferenceClass(PhoneNumber.class);
    phoneNumbersMapping.useMapClass(HashMap.class, "getType");

See Configuring an XML Composite Collection Mapping for more information.