Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/MOXy/Relationships/Privately Owned/One-to-Many"

m (New page: {{EclipseLink_UserGuide |info=y }} =One-to-Many Composite Collection Mapping Use XML composite collection mappings to represent one-to-many relationships. Composite collection XML mappings...)
 
m
Line 2: Line 2:
 
|info=y
 
|info=y
 
}}
 
}}
=One-to-Many Composite Collection Mapping
+
=One-to-Many Composite Collection Mapping=
 
Use XML composite collection mappings to represent one-to-many relationships. Composite collection XML mappings can reference any class that has an EclipseLink descriptor. The attribute in the object mapped must implement either the Java <tt>Collection</tt> interface (for example, <tt>Vector</tt> or <tt>HashSet</tt>) or <tt>Map</tt> interface (for example, <tt>Hashtable</tt> or <tt>TreeMap</tt>). The <tt>CompositeCollectionMapping</tt> class allows a reference to the mapped class and the indexing type for that class.
 
Use XML composite collection mappings to represent one-to-many relationships. Composite collection XML mappings can reference any class that has an EclipseLink descriptor. The attribute in the object mapped must implement either the Java <tt>Collection</tt> interface (for example, <tt>Vector</tt> or <tt>HashSet</tt>) or <tt>Map</tt> interface (for example, <tt>Hashtable</tt> or <tt>TreeMap</tt>). The <tt>CompositeCollectionMapping</tt> class allows a reference to the mapped class and the indexing type for that class.
  

Revision as of 13:03, 23 June 2010


link="http://wiki.eclipse.org/EclipseLink"
EclipseLink
Website
Download
Community
Mailing ListForumsIRC
Bugzilla
Open
Help Wanted
Bug Day
Contribute
Browse Source

One-to-Many Composite Collection Mapping

Use XML composite collection mappings to represent one-to-many relationships. Composite collection XML mappings can reference any class that has an EclipseLink 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 this example, XML Composite Collection Mapping illustrates an XML composite collection mapping to different elements by position in a corresponding XML document. Java for XML Composite Collection Mapping for a Collection Attribute shows how to configure this mapping in Java for a Collection attribute and 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

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");

Eclipselink-logo.gif
Version: DRAFT
Other versions...