That exhausts the metadata document structure. We present the complete metadata document for our sample model below:
Example 5.3. Full Metadata Document
<?xml version="1.0"?>
<!-- Note that all persistence-capable classes must be listed, but -->
<!-- very few fields need to be specified -->
<jdo>
<package name="org.mag">
<class name="Magazine" objectid-class="Magazine$MagazineId">
<field name="isbn" primary-key="true"/>
<field name="title" primary-key="true"/>
<field name="articles">
<collection element-type="Article" dependent-element="true"/>
</field>
<fetch-group name="detail">
<field name="publisher" fetch-depth="0"/>
<field name="articles" fetch-depth="0"/>
</fetch-group>
</class>
<class name="Article" identity-type="application" detachable="true">
<field name="id" primary-key="true"/>
<field name="authors">
<map key-type="String" value-type="org.mag.pub.Author"/>
</field>
<field name="subtitles">
<collection element-type="String"/>
</field>
</class>
</package>
<package name="org.mag.pub">
<class name="Company">
<field name="address" embedded="true"/>
<field name="subscriptions">
<collection element-type="org.mag.subscribe.Subscription"/>
</field>
<field name="mags">
<collection element-type="org.mag.Magazine"/>
</field>
</class>
<class name="Author">
<field name="address" embedded="true"/>
</class>
<class name="Address" embedded-only="true"/>
</package>
<package name="org.mag.subscribe">
<class name="Contract" identity-type="application">
<field name="id" primary-key="true"/>
</class>
<class name="Subscription" detachable="true">
<field name="items">
<collection element-type="Subscription$LineItem" dependent-element="true"/>
<extension vendor-name="kodo" key="lock-group" value="none"/>
</field>
</class>
<class name="LifetimeSubscription"/>
<class name="TrialSubscription"/>
<class name="Subscription$LineItem"/>
</package>
</jdo>