db-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From an...@apache.org
Subject svn commit: r892842 [2/15] - in /websites/production/db/content/jdo: ./ guides/ releases/
Date Sun, 05 Jan 2014 10:08:46 GMT

Added: websites/production/db/content/jdo/annotations.html
==============================================================================
--- websites/production/db/content/jdo/annotations.html (added)
+++ websites/production/db/content/jdo/annotations.html Sun Jan  5 10:08:45 2014
@@ -0,0 +1,2957 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jan 5, 2014 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>JDO - 
+        JDO Annotations</title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+    <meta name="Date-Revision-yyyymmdd" content="20140105" />
+    <meta http-equiv="Content-Language" content="en" />
+        
+        </head>
+  <body class="composite">
+    <div id="banner">
+                                      <a href="./" id="bannerLeft">
+                                                <img src="images/JDOx150.gif" alt="Apache JDO" />
+                </a>
+                                            <a href="./" id="bannerRight">
+                                                <img src="images/jdo_text.gif" alt="Apache JDO" />
+                </a>
+            <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+            
+                    
+                  <div class="xright">                    <a href="https://www.facebook.com/JavaDataObjects" class="externalLink" title="Facebook">Facebook</a>
+            |
+                        <a href="https://twitter.com/JavaDataObjects" class="externalLink" title="Twitter">Twitter</a>
+            |
+                        <a href="https://plus.google.com/106584233526334524963" class="externalLink" title="Google+">Google+</a>
+            |
+                        <a href="http://wiki.apache.org/jdo" class="externalLink" title="Wiki">Wiki</a>
+            |
+                        <a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10630" class="externalLink" title="Issue Tracker">Issue Tracker</a>
+            |
+                        <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+            |
+                        <a href="api30/apidocs/index.html" title="Latest Javadocs">Latest Javadocs</a>
+              
+                    
+      </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+             
+                    
+                                <h5>General</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="index.html" title="Home">Home</a>
+            </li>
+                  <li class="none">
+                          <a href="why_jdo.html" title="Why JDO?">Why JDO?</a>
+            </li>
+                  <li class="none">
+                          <a href="jdo_v_jpa.html" title="JDO v JPA">JDO v JPA</a>
+            </li>
+                  <li class="none">
+                          <a href="jdo_v_jpa_api.html" title="JDO v JPA : API">JDO v JPA : API</a>
+            </li>
+                  <li class="none">
+                          <a href="jdo_v_jpa_orm.html" title="JDO v JPA : ORM">JDO v JPA : ORM</a>
+            </li>
+                  <li class="none">
+                          <a href="downloads.html" title="Downloads">Downloads</a>
+            </li>
+                  <li class="none">
+                          <a href="http://www.apache.org/licenses/LICENSE-2.0" class="externalLink" title="License">License</a>
+            </li>
+          </ul>
+                       <h5>JDO Implementation</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="specifications.html" title="Specifications">Specifications</a>
+            </li>
+                  <li class="none">
+                          <a href="tck.html" title="TCK">TCK</a>
+            </li>
+          </ul>
+                       <h5>JDO Usage</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="impls.html" title="Implementations">Implementations</a>
+            </li>
+                  <li class="none">
+                          <a href="javadoc.html" title="API Javadoc">API Javadoc</a>
+            </li>
+                  <li class="none">
+                          <a href="class_types.html" title="Types of Classes">Types of Classes</a>
+            </li>
+                  <li class="none">
+                          <a href="field_types.html" title="Types of Fields">Types of Fields</a>
+            </li>
+                                                                                                                                                      <li class="expanded">
+                          <a href="metadata.html" title="MetaData">MetaData</a>
+                    <ul>
+                      <li class="none">
+            <strong>Annotations</strong>
+          </li>
+                      <li class="none">
+                          <a href="jdo_dtd.html" title="jdo DTD/XSD">jdo DTD/XSD</a>
+            </li>
+                      <li class="none">
+                          <a href="orm_dtd.html" title="orm DTD/XSD">orm DTD/XSD</a>
+            </li>
+                      <li class="none">
+                          <a href="jdoquery_dtd.html" title="jdoquery DTD/XSD">jdoquery DTD/XSD</a>
+            </li>
+                      <li class="none">
+                          <a href="jdoconfig_dtd.html" title="jdoconfig DTD/XSD">jdoconfig DTD/XSD</a>
+            </li>
+              </ul>
+        </li>
+                  <li class="none">
+                          <a href="enhancement.html" title="Bytecode Enhancement">Bytecode Enhancement</a>
+            </li>
+                  <li class="none">
+                          <a href="jdohelper.html" title="JDOHelper">JDOHelper</a>
+            </li>
+                  <li class="none">
+                          <a href="pmf.html" title="PersistenceManagerFactory">PersistenceManagerFactory</a>
+            </li>
+                  <li class="none">
+                          <a href="pm.html" title="PersistenceManager">PersistenceManager</a>
+            </li>
+                  <li class="none">
+                          <a href="transactions.html" title="Transactions">Transactions</a>
+            </li>
+                  <li class="none">
+                          <a href="attach_detach.html" title="Attach-Detach">Attach-Detach</a>
+            </li>
+                  <li class="none">
+                          <a href="fetchgroups.html" title="Fetch Groups">Fetch Groups</a>
+            </li>
+                  <li class="none">
+                          <a href="state_transition.html" title="Object States">Object States</a>
+            </li>
+                  <li class="none">
+                          <a href="object_retrieval.html" title="Object Retrieval">Object Retrieval</a>
+            </li>
+                                                                                                  <li class="expanded">
+                          <a href="jdoql.html" title="JDOQL">JDOQL</a>
+                    <ul>
+                      <li class="none">
+                          <a href="jdoql_result.html" title="Result">Result</a>
+            </li>
+                      <li class="none">
+                          <a href="jdoql_methods.html" title="Methods">Methods</a>
+            </li>
+                      <li class="none">
+                          <a href="jdoql_quickref.pdf" title="Quick Ref PDF">Quick Ref PDF</a>
+            </li>
+              </ul>
+        </li>
+                  <li class="none">
+                          <a href="extents.html" title="Extents">Extents</a>
+            </li>
+                                                                                      <li class="collapsed">
+                          <a href="guides.html" title="Guides">Guides</a>
+                  </li>
+                  <li class="none">
+                          <a href="references.html" title="References">References</a>
+            </li>
+                  <li class="none">
+                          <a href="exceptions.html" title="Exceptions">Exceptions</a>
+            </li>
+                  <li class="none">
+                          <a href="glossary.html" title="Glossary">Glossary</a>
+            </li>
+          </ul>
+                       <h5>Articles</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="jdo_3_0_overview.html" title="JDO 3.0 Overview">JDO 3.0 Overview</a>
+            </li>
+          </ul>
+                       <h5>Community</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="get-involved.html" title="Get Involved">Get Involved</a>
+            </li>
+                  <li class="none">
+                          <a href="team-list.html" title="Project Team">Project Team</a>
+            </li>
+                  <li class="none">
+                          <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+            </li>
+                  <li class="none">
+                          <a href="faq.html" title="FAQ">FAQ</a>
+            </li>
+          </ul>
+                       <h5>Development</h5>
+                  <ul>
+                  <li class="none">
+                          <a href="roadmap.html" title="RoadMap / TODO">RoadMap / TODO</a>
+            </li>
+                  <li class="none">
+                          <a href="svn.html" title="Source Code">Source Code</a>
+            </li>
+                  <li class="none">
+                          <a href="http://cwiki.apache.org/GMOxDEV/coding-standards.html" class="externalLink" title="Coding Standards">Coding Standards</a>
+            </li>
+                  <li class="none">
+                          <a href="issuetracking.html" title="Issue Tracking">Issue Tracking</a>
+            </li>
+                  <li class="none">
+                          <a href="dependencies.html" title="Dependencies">Dependencies</a>
+            </li>
+          </ul>
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+                   
+                    
+            </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+        
+    
+        <div class="section"><h2>JDO : Annotations<a name="JDO_:_Annotations"></a></h2>
+            <p>
+                One of the things that JDK 1.5 provides that can be of some use is annotations, and JDO provides its
+                own set. When selecting to use annotations please bear in mind the following :-
+            </p>
+            <ul>
+                <li>You must have the <b>jdo-api</b> jar in your CLASSPATH since this provides the annotations</li>
+                <li>Annotations should really only be used for attributes of persistence that you won't be changing
+                    at deployment. Things such as table and column names shouldn't really be specified using annotations
+                    although it is permitted. Instead it would be better to put such information in an ORM MetaData file.</li>
+                <li>Annotations can be added in two places - for the class as a whole, or for a field in particular.</li>
+                <li>You can annotate fields or getters with field-level information. If you annotate fields then the
+                    fields are processed for persistence. If you annotate the methods (getters) then the methods (properties)
+                    are processed for persistence.</li>
+                <li>Annotations are prefixed by the @ symbol and can take properties (in brackets after the name, 
+                    comma-separated)</li>
+            </ul>
+
+            <table border="0" class="bodyTable">
+                <tr class="a">
+                    <th>Annotation</th>
+                    <th>Class/Field/Method</th>
+                    <th>Description</th>
+                </tr>
+                <tr class="b">
+                    <td><a href="#PersistenceCapable">@PersistenceCapable</a></td>
+                    <td>Class</td>
+                    <td>Specifies that the class/interface is persistent. In the case of an interface this would
+                        utilise JDO2's &quot;persistent-interface&quot; capabilities</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#PersistenceAware">@PersistenceAware</a></td>
+                    <td>Class</td>
+                    <td>Specifies that the class is not persistent but needs to be able to access fields of persistent classes</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Cacheable_Class">@Cacheable</a></td>
+                    <td>Class</td>
+                    <td>Specifies whether this class can be cached in a Level 2 cache or not.</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#EmbeddedOnly">@EmbeddedOnly</a></td>
+                    <td>Class</td>
+                    <td>Specifies that the class is persistent and can only be persisted embedded in another persistent class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#DatastoreIdentity">@DatastoreIdentity</a></td>
+                    <td>Class</td>
+                    <td>Specifies the details for generating datastore-identity for this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Version">@Version</a></td>
+                    <td>Class</td>
+                    <td>Specifies any versioning process for objects of this class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#FetchPlans">@FetchPlans</a></td>
+                    <td>Class</td>
+                    <td>Defines a series of fetch plans</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#FetchPlan">@FetchPlan</a></td>
+                    <td>Class</td>
+                    <td>Defines a fetch plan</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#FetchGroups">@FetchGroups</a></td>
+                    <td>Class</td>
+                    <td>Defines a series of fetch groups for this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#FetchGroup">@FetchGroup</a></td>
+                    <td>Class</td>
+                    <td>Defines a fetch group for this class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Sequence">@Sequence</a></td>
+                    <td>Class</td>
+                    <td>Defines a sequence for use by this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Queries">@Queries</a></td>
+                    <td>Class</td>
+                    <td>Defines a series of named queries for this class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Query">@Query</a></td>
+                    <td>Class</td>
+                    <td>Defines a named query for this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Inheritance">@Inheritance</a></td>
+                    <td>Class</td>
+                    <td>Specifies the inheritance model for persisting this class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Discriminator">@Discriminator</a></td>
+                    <td>Class</td>
+                    <td>Specifies any discriminator for this class to be used for determining object types</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#PrimaryKey_Class">@PrimaryKey</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines the primary key constraint for this class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Indices">@Indices</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a series of indices for this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Index_Class">@Index</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines an index for the class as a whole (typically a composite index)</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Uniques">@Uniques</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a series of unique constraints for this class</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Unique_Class">@Unique</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a unique constraint for the class as a whole (typically a composite)</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#ForeignKeys">@ForeignKeys</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a series of foreign-keys (typically for non-mapped columns/tables)</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#ForeignKey_Class">@ForeignKey</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a foreign-key for the class as a whole (typically for non-mapped columns/tables)</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Joins">@Joins</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a series of joins to secondary tables from this table</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Join_Class">@Join</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a join to a secondary table from this table</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Columns">@Columns</a></td>
+                    <td>Class</td>
+                    <td>ORM : Defines a series of columns that dont have associated fields (&quot;unmapped columns&quot;)</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Persistent">@Persistent</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines the persistence for a field/property of the class</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Serialized">@Serialized</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines this field as being stored serialised</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#NotPersistent">@NotPersistent</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines this field as being not persisted</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Transactional">@Transactional</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines this field as being transactional (not persisted, but managed)</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Cacheable">@Cacheable</a></td>
+                    <td>Field/Method</td>
+                    <td>Specifies whether this field/property can be cached in a Level 2 cache or not.</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#PrimaryKey">@PrimaryKey</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines this field as being (part of) the primary key</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Element">@Element</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines the details of elements of an array/collection stored in this field</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Key">@Key</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines the details of keys of a map stored in this field</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Value">@Value</a></td>
+                    <td>Field/Method</td>
+                    <td>Defines the details of values of a map stored in this field</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Order">@Order</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines the details of ordering of an array/collection stored in this field</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Join">@Join</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines the join to a join table for a collection/array/map</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Embedded">@Embedded</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines that this field is embedded and how it is embedded</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Columns">@Columns</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines a series of columns where a field is persisted</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Column">@Column</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines a column where a field is persisted</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Index">@Index</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines an index for the field</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Unique">@Unique</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines a unique constraint for the field</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#ForeignKey">@ForeignKey</a></td>
+                    <td>Field/Method</td>
+                    <td>ORM : Defines a foreign key for the field</td>
+                </tr>
+                <tr class="b">
+                    <td><a href="#Extensions">@Extensions</a></td>
+                    <td>Class/Field/Method</td>
+                    <td>Defines a series of JDO extensions</td>
+                </tr>
+                <tr class="a">
+                    <td><a href="#Extension">@Extension</a></td>
+                    <td>Class/Field/Method</td>
+                    <td>Defines a JDO extension</td>
+                </tr>
+            </table>
+            <br />
+
+            <a name="PersistenceCapable"></a>
+            <div class="section"><h3>@PersistenceCapable<a name="aPersistenceCapable"></a></h3>
+                <p>
+                    This annotation is used when you want to mark a class as persistent.
+                    It equates to the &lt;class&gt; MetaData element (though with only some of its attributes).
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>requiresExtent</td>
+                        <td>String</td>
+                        <td>Whether an extent is required for this class</td>
+                        <td>true</td>
+                    </tr>
+                    <tr class="a">
+                        <td>embeddedOnly</td>
+                        <td>String</td>
+                        <td>Whether objects of this class can only be stored embedded in other objects</td>
+                        <td>false</td>
+                    </tr>
+                    <tr class="b">
+                        <td>detachable</td>
+                        <td>String</td>
+                        <td>Whether objects of this class can be detached</td>
+                        <td>false</td>
+                    </tr>
+                    <tr class="a">
+                        <td>identityType</td>
+                        <td>IdentityType</td>
+                        <td>Type of identity (APPLICATION, DATASTORE, NONDURABLE)</td>
+                        <td>DATASTORE</td>
+                    </tr>
+                    <tr class="b">
+                        <td>objectIdClass</td>
+                        <td>Class</td>
+                        <td>Object-id class</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table where this class is persisted</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>catalog</td>
+                        <td>String</td>
+                        <td>ORM : Name of the catalog where this table is persisted</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>schema</td>
+                        <td>String</td>
+                        <td>ORM : Name of the schema where this table is persisted</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>cacheable</td>
+                        <td>String</td>
+                        <td>Whether the class can be L2 cached. <b>From JDO2.2</b></td>
+                        <td><b>true</b> | false</td>
+                    </tr>
+                    <tr class="a">
+                        <td>serializeRead</td>
+                        <td>String</td>
+                        <td>Whether to default reads of this object type to lock the object</td>
+                        <td>false</td>
+                    </tr>
+                    <tr class="b">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable(identityType=IdentityType.APPLICATION)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="PersistenceAware"></a>
+            <div class="section"><h3>@PersistenceAware<a name="aPersistenceAware"></a></h3>
+                <p>
+                    This annotation is used when you want to mark a class as being used in persistence but not being persistable.
+                    That is &quot;persistence-aware&quot; in JDO terminology. It has no attributes.
+                    Specified on the <b>class</b>.
+                </p>
+                <div class="source"><pre>
+@PersistenceAware
+public class MyClass
+{
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="class_types.html">Class Types</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="Cacheable_Class"></a>
+            <div class="section"><h3>@Cacheable<a name="aCacheable"></a></h3>
+                <p>
+                    This annotation is a shortcut for @PersistenceCapable(cacheable={value}) specifying whether
+                    the class can be cached in a Level 2 cache.
+                    Specified on the <b>class</b>. The default
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td>String</td>
+                        <td>Whether the class is cacheable</td>
+                        <td><b>true</b> | false</td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@Cacheable(&quot;false&quot;)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="EmbeddedOnly"></a>
+            <div class="section"><h3>@EmbeddedOnly<a name="aEmbeddedOnly"></a></h3>
+                <p>
+                    This annotation is a shortcut for @PersistenceCapable(embeddedOnly=&quot;true&quot;) meaning that the class can only
+                    be persisted embedded into another class. It has no attributes.
+                    Specified on the <b>class</b>.
+                </p>
+                <div class="source"><pre>
+@EmbeddedOnly
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Inheritance"></a>
+            <div class="section"><h3>@Inheritance<a name="aInheritance"></a></h3>
+                <p>
+                    Annotation used to define the inheritance for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>strategy</td>
+                        <td>InheritanceStrategy</td>
+                        <td>The inheritance strategy (NEW_TABLE, SUBCLASS_TABLE, SUPERCLASS_TABLE)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>customStrategy</td>
+                        <td>String</td>
+                        <td>Name of a custom inheritance strategy (depending on
+                        what your JDO implementation supports</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Inheritance(strategy=InheritanceStrategy.NEW_TABLE)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Discriminator"></a>
+            <div class="section"><h3>@Discriminator<a name="aDiscriminator"></a></h3>
+                <p>
+                    Annotation used to define a discriminator to be stored with instances of this class and is used
+                    to determine the types of the objects being stored.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>strategy</td>
+                        <td>DiscriminatorStrategy</td>
+                        <td>The discriminator strategy (VALUE_MAP, CLASS_NAME, NONE)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>value</td>
+                        <td>String</td>
+                        <td>Value to use for instances of this type when using strategy of VALUE_MAP</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column to use to store the discriminator</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>indexed</td>
+                        <td>String</td>
+                        <td>ORM : Whether the discriminator column is to be indexed</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Column definitions used for storing the discriminator</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Inheritance(strategy=InheritanceStrategy.NEW_TABLE)
+@Discriminator(strategy=DiscriminatorStrategy.CLASS_NAME)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="DatastoreIdentity"></a>
+            <div class="section"><h3>@DatastoreIdentity<a name="aDatastoreIdentity"></a></h3>
+                <p>
+                    Annotation used to define the identity when using datastore-identity for the class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>strategy</td>
+                        <td>IdGeneratorStrategy</td>
+                        <td>The inheritance strategy (NATIVE, SEQUENCE, IDENTITY, INCREMENT, UUIDSTRING, UUIDHEX)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>customStrategy</td>
+                        <td>String</td>
+                        <td>Name of a custom id generation strategy (e.g &quot;max&quot;, &quot;auid&quot;). 
+                            This overrides the value of &quot;strategy&quot;</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>sequence</td>
+                        <td>String</td>
+                        <td>Name of the sequence to use (when using SEQUENCE strategy) - refer to @Sequence</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column for the datastore identity</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Column definition for the column(s) for the datastore identity</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@DatastoreIdentity(strategy=IdGeneratorStrategy.INCREMENT)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Version"></a>
+            <div class="section"><h3>@Version<a name="aVersion"></a></h3>
+                <p>
+                    Annotation used to define the versioning details for use with optimistic transactions.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>strategy</td>
+                        <td>VersionStrategy</td>
+                        <td>The version strategy (NONE, STATE_IMAGE, DATE_TIME, VERSION_NUMBER)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>indexed</td>
+                        <td>String</td>
+                        <td>Whether the version column(s) is indexed</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column for the version</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Column definition for the column(s) for the version</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Version(strategy=VersionStrategy.VERSION_NUMBER)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="transactions.html">transactions</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="PrimaryKey_Class"></a>
+            <div class="section"><h3>@PrimaryKey<a name="aPrimaryKey"></a></h3>
+                <p>
+                    Annotation used to define the primary key constraint for a class.
+                    Maps across to the &lt;primary-key&gt; MetaData element. Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>ORM : Name of the primary key constraint</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column for this key</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Column definition for the column(s) of this key</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@PrimaryKey(name=&quot;MYCLASS_PK&quot;)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="FetchPlans"></a>
+            <div class="section"><h3>@FetchPlans<a name="aFetchPlans"></a></h3>
+                <p>
+                    Annotation used to define a set of fetch plans.
+                    Specified on the <b>class</b>. Used by named queries
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#FetchPlan">FetchPlan</a>[]</td>
+                        <td>Array of fetch plans - see @FetchPlan annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@FetchPlans({@FetchPlan(name=&quot;plan_3&quot;, maxFetchDepth=3, fetchGroups={&quot;group1&quot;, &quot;group4&quot;}),
+             @FetchPlan(name=&quot;plan_4&quot;, maxFetchDepth=2, fetchGroups={&quot;group1&quot;, &quot;group2&quot;})})
+public class MyClass
+{
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="fetchgroups.html">FetchGroups</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="FetchPlan"></a>
+            <div class="section"><h3>@FetchPlan<a name="aFetchPlan"></a></h3>
+                <p>
+                    Annotation used to define a fetch plan
+                    Is equivalent to the &lt;fetch-plan&gt; metadata element.
+                    Specified on the <b>class</b>. Used by named queries
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>Name of the FetchPlan</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>maxFetchDepth</td>
+                        <td>int</td>
+                        <td>Maximum fetch depth</td>
+                        <td>1</td>
+                    </tr>
+                    <tr class="b">
+                        <td>fetchSize</td>
+                        <td>int</td>
+                        <td>Size hint for fetching query result sets</td>
+                        <td>0</td>
+                    </tr>
+                    <tr class="a">
+                        <td>fetchGroups</td>
+                        <td>String[]</td>
+                        <td>Names of the fetch groups included in this FetchPlan.</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@FetchPlan(name=&quot;plan_3&quot;, maxFetchDepth=3, fetchGroups={&quot;group1&quot;, &quot;group4&quot;})
+public class MyClass
+{
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="fetchgroups.html">FetchGroups</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="FetchGroups"></a>
+            <div class="section"><h3>@FetchGroups<a name="aFetchGroups"></a></h3>
+                <p>
+                    Annotation used to define a set of fetch groups for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#FetchGroup">FetchGroup</a>[]</td>
+                        <td>Array of fetch groups - see @FetchGroup annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@FetchGroups({@FetchGroup(name=&quot;one_two&quot;, members={@Persistent(name=&quot;field1&quot;), @Persistent(name=&quot;field2&quot;)}),
+              @FetchGroup(name=&quot;three&quot;, members={@Persistent(name=&quot;field3&quot;)})})
+public class MyClass
+{
+    @Persistent
+    String field1;
+
+    @Persistent
+    String field2;
+
+    @Persistent
+    String field3;
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="fetchgroups.html">FetchGroups</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="FetchGroup"></a>
+            <div class="section"><h3>@FetchGroup<a name="aFetchGroup"></a></h3>
+                <p>
+                    Annotation used to define a fetch group.
+                    Is equivalent to the &lt;fetch-group&gt; metadata element.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>Name of the fetch group</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>postLoad</td>
+                        <td>String</td>
+                        <td>Whether to call jdoPostLoad after loading this fetch group</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>members</td>
+                        <td><a href="#Persistent">Persistent</a>[]</td>
+                        <td>Definitions of the fields/properties to include in this fetch group</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@FetchGroup(name=&quot;one_two&quot;, members={@Persistent(name=&quot;field1&quot;), @Persistent(name=&quot;field2&quot;)})
+public class MyClass
+{
+    @Persistent
+    String field1;
+
+    @Persistent
+    String field2;
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="fetchgroups.html">FetchGroups</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="Sequence"></a>
+            <div class="section"><h3>@Sequence<a name="aSequence"></a></h3>
+                <p>
+                    Annotation used to define a sequence generator.
+                    Is equivalent to the &lt;sequence&gt; metadata element.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>Name of the sequence</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>strategy</td>
+                        <td>SequenceStrategy</td>
+                        <td>Strategy for the sequence (NONTRANSACTIONAL, CONTIGUOUS, NONCONTIGUOUS)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>datastoreSequence</td>
+                        <td>String</td>
+                        <td>Name of a datastore sequence that this maps to</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>factoryClass</td>
+                        <td>Class</td>
+                        <td>Factory class to use to generate the sequence</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>initialValue</td>
+                        <td>int</td>
+                        <td>Initial value of the sequence</td>
+                        <td>1</td>
+                    </tr>
+                    <tr class="a">
+                        <td>allocationSize</td>
+                        <td>int</td>
+                        <td>Allocation size of the sequence</td>
+                        <td>50</td>
+                    </tr>
+                    <tr class="b">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <br />
+                <br />
+            </div>
+
+            <a name="Queries"></a>
+            <div class="section"><h3>@Queries<a name="aQueries"></a></h3>
+                <p>
+                    Annotation used to define a set of named queries for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#Query">Query</a>[]</td>
+                        <td>Array of queries - see @Query annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Queries({@Query(name=&quot;PeopleCalledSmith&quot;, language=&quot;JDOQL&quot;, 
+                 value=&quot;SELECT FROM mydomain.Person WHERE surname == \&quot;Smith\&quot;&quot;),
+          @Query(name=&quot;PeopleCalledJones&quot;, language=&quot;JDOQL&quot;, 
+                 value=&quot;SELECT FROM mydomain.Person WHERE surname == \&quot;Jones\&quot;&quot;)})
+public class Person
+{
+    @Persistent
+    String surname;
+
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Query"></a>
+            <div class="section"><h3>@Query<a name="aQuery"></a></h3>
+                <p>
+                    Annotation used to define a named query.
+                    Is equivalent to the &lt;query&gt; metadata element.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>Name of the query</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>value</td>
+                        <td>String</td>
+                        <td>The query string itself</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>language</td>
+                        <td>String</td>
+                        <td>Language of the query (JDOQL, SQL, ...)</td>
+                        <td>JDOQL</td>
+                    </tr>
+                    <tr class="a">
+                        <td>unmodifiable</td>
+                        <td>String</td>
+                        <td>Whether the query is not modifiable at runtime</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>unique</td>
+                        <td>String</td>
+                        <td>Whether the query returns unique results (for SQL queries only)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>resultClass</td>
+                        <td>Class</td>
+                        <td>Result class to use (for SQL queries only)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>fetchPlan</td>
+                        <td>String</td>
+                        <td>Name of a named FetchPlan to use with this query</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Query(name=&quot;PeopleCalledSmith&quot;, language=&quot;JDOQL&quot;, 
+       value=&quot;SELECT FROM mydomain.Person WHERE surname == \&quot;Smith\&quot;&quot;)
+public class Person
+{
+    @Persistent
+    String surname;
+
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Indices"></a>
+            <div class="section"><h3>@Indices<a name="aIndices"></a></h3>
+                <p>
+                    Annotation used to define a set of indices for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#Index_Class">Index</a>[]</td>
+                        <td>Array of indices - see @Index annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Indices({@Index(name=&quot;MYINDEX_1&quot;, members={&quot;field1&quot;,&quot;field2&quot;}), @Index(name=&quot;MYINDEX_2&quot;, members={&quot;field3&quot;})})
+public class Person
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Index_Class"></a>
+            <div class="section"><h3>@Index<a name="aIndex"></a></h3>
+                <p>
+                    Annotation used to define an index for the class as a whole typically being a composite index across
+                    multiple columns or fields/properties. 
+                    Is equivalent to the &lt;index&gt; metadata element when specified under class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>ORM : Name of the index</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table for the index</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>unique</td>
+                        <td>String</td>
+                        <td>ORM : Whether the index is unique</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>members</td>
+                        <td>String[]</td>
+                        <td>ORM : Names of the fields/properties that make up this index</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Columns that make up this index</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Index(name=&quot;MY_COMPOSITE_IDX&quot;, members={&quot;field1&quot;, &quot;field2&quot;})
+public class MyClass
+{
+    @Persistent
+    String field1;
+
+    @Persistent
+    String field2;
+
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Uniques"></a>
+            <div class="section"><h3>@Uniques<a name="aUniques"></a></h3>
+                <p>
+                    Annotation used to define a set of unique constraints for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#Unique_Class">Unique</a>[]</td>
+                        <td>Array of constraints - see @Unique annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Uniques({@Unique(name=&quot;MYCONST_1&quot;, members={&quot;field1&quot;,&quot;field2&quot;}), @Unique(name=&quot;MYCONST_2&quot;, members={&quot;field3&quot;})})
+public class Person
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Unique_Class"></a>
+            <div class="section"><h3>@Unique<a name="aUnique"></a></h3>
+                <p>
+                    Annotation used to define a unique constraints for the class as a whole typically being a composite constraint across
+                    multiple columns or fields/properties. 
+                    Is equivalent to the &lt;unique&gt; metadata element when specified under class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>ORM : Name of the constraint</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table for the constraint</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>deferred</td>
+                        <td>String</td>
+                        <td>ORM : Whether the constraint is deferred</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>members</td>
+                        <td>String[]</td>
+                        <td>ORM : Names of the fields/properties that make up this constraint</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Columns that make up this constraint</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Unique(name=&quot;MY_COMPOSITE_IDX&quot;, members={&quot;field1&quot;, &quot;field2&quot;})
+public class MyClass
+{
+    @Persistent
+    String field1;
+
+    @Persistent
+    String field2;
+
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="ForeignKeys"></a>
+            <div class="section"><h3>@ForeignKeys<a name="aForeignKeys"></a></h3>
+                <p>
+                    Annotation used to define a set of foreign-key constraints for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#ForeignKey_Class">ForeignKey</a>[]</td>
+                        <td>Array of FK constraints - see @ForeignKey annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <br />
+                <br />
+            </div>
+
+            <a name="ForeignKey_Class"></a>
+            <div class="section"><h3>@ForeignKey<a name="aForeignKey"></a></h3>
+                <p>
+                    Annotation used to define a foreign-key constraint for the class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>ORM : Name of the constraint</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table that the FK is to</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>deferred</td>
+                        <td>String</td>
+                        <td>ORM : Whether the constraint is deferred</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>unique</td>
+                        <td>String</td>
+                        <td>ORM : Whether the constraint is unique</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>deleteAction</td>
+                        <td>ForeignKeyAction</td>
+                        <td>ORM : Action to apply to the FK to be used on deleting</td>
+                        <td>ForeignKeyAction.RESTRICT</td>
+                    </tr>
+                    <tr class="a">
+                        <td>updateAction</td>
+                        <td>ForeignKeyAction</td>
+                        <td>ORM : Action to apply to the FK to be used on updating</td>
+                        <td>ForeignKeyAction.RESTRICT</td>
+                    </tr>
+                    <tr class="b">
+                        <td>members</td>
+                        <td>String[]</td>
+                        <td>ORM : Names of the fields/properties that compose this FK.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Columns that compose this FK.</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <br />
+                <br />
+            </div>
+
+            <a name="Joins"></a>
+            <div class="section"><h3>@Joins<a name="aJoins"></a></h3>
+                <p>
+                    Annotation used to define a set of joins (to secondary tables) for a class.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#Join_Class">Join</a>[]</td>
+                        <td>Array of joins - see @Join annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Joins({@Join(table=&quot;MY_OTHER_TABLE&quot;, column=&quot;MY_PK_COL&quot;),
+        @Join(table=&quot;MY_SECOND_TABLE&quot;, column=&quot;MY_PK_COL&quot;)})
+public class MyClass
+{
+    @Persistent(table=&quot;MY_OTHER_TABLE&quot;)
+    String myField;
+
+    @Persistent(table=&quot;MY_SECOND_TABLE&quot;)
+    String myField2;
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Join_Class"></a>
+            <div class="section"><h3>@Join<a name="aJoin"></a></h3>
+                <p>
+                    Annotation used to specify a join for a secondary table. Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Table name used when joining the PK of a FCO class table to a secondary table.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column used to join to the PK of the primary table (when only one column used)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>outer</td>
+                        <td>String</td>
+                        <td>ORM : Whether to use an outer join when retrieving fields/properties stored in the secondary table</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Name of the colums used to join to the PK of the primary table (when multiple columns used)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable(name=&quot;MYTABLE&quot;)
+@Join(table=&quot;MY_OTHER_TABLE&quot;, column=&quot;MY_PK_COL&quot;)
+public class MyClass
+{
+    @Persistent(name=&quot;MY_OTHER_TABLE&quot;)
+    String myField;
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Columns_Class"></a>
+            <div class="section"><h3>@Columns<a name="aColumns"></a></h3>
+                <p>
+                    Annotation used to define the columns which have no associated field in the class.
+                    User should specify a minimum of @Column &quot;name&quot;, &quot;jdbcType&quot;, and &quot;insertValue&quot;.
+                    Specified on the <b>class</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>Array of columns - see @Column annotation</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+@Columns(@Column(name=&quot;MY_OTHER_COL&quot;, jdbcType=&quot;VARCHAR&quot;, insertValue=&quot;N/A&quot;)
+public class MyClass
+{
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Persistent"></a>
+            <div class="section"><h3>@Persistent<a name="aPersistent"></a></h3>
+                <p>
+                    Annotation used to define the fields/properties to be persisted.
+                    Is equivalent to the &lt;field&gt; and &lt;property&gt; metadata elements.
+                    Specified on the <b>field/method</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>persistenceModifier</td>
+                        <td>PersistenceModifier</td>
+                        <td>Whether the field is persistent (PERSISTENT, TRANSACTIONAL, NONE)</td>
+                        <td>[depends on field type]</td>
+                    </tr>
+                    <tr class="a">
+                        <td>defaultFetchGroup</td>
+                        <td>String</td>
+                        <td>Whether the field is part of the DFG</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>nullValue</td>
+                        <td>NullValue</td>
+                        <td>Required behaviour when inserting a null value for this field (NONE, EXCEPTION, DEFAULT).</td>
+                        <td>NONE</td>
+                    </tr>
+                    <tr class="a">
+                        <td>embedded</td>
+                        <td>String</td>
+                        <td>Whether this field as a whole is embedded. Use @Embedded to specify details.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>embeddedElement</td>
+                        <td>String</td>
+                        <td>Whether the element stored in this collection/array field/property is embedded</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>embeddedKey</td>
+                        <td>String</td>
+                        <td>Whether the key stored in this map field/property is embedded</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>embeddedValue</td>
+                        <td>String</td>
+                        <td>Whether the value stored in this map field/property is embedded</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>serialized</td>
+                        <td>String</td>
+                        <td>Whether this field/property as a whole is serialised</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>serializedElement</td>
+                        <td>String</td>
+                        <td>Whether the element stored in this collection/array field/property is serialised</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>serializedKey</td>
+                        <td>String</td>
+                        <td>Whether the key stored in this map field/property is serialised</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>serializedValue</td>
+                        <td>String</td>
+                        <td>Whether the value stored in this map field/property is serialised</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>dependent</td>
+                        <td>String</td>
+                        <td>Whether this field is dependent, deleting the related object when deleting this object</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>dependentElement</td>
+                        <td>String</td>
+                        <td>Whether the element stored in this field/property is dependent</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>dependentKey</td>
+                        <td>String</td>
+                        <td>Whether the key stored in this field/property is dependent</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>dependentValue</td>
+                        <td>String</td>
+                        <td>Whether the value stored in this field/property is dependent</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>primaryKey</td>
+                        <td>String</td>
+                        <td>Whether this field is (part of) the primary key</td>
+                        <td>false</td>
+                    </tr>
+                    <tr class="b">
+                        <td>valueStrategy</td>
+                        <td>IdGeneratorStrategy</td>
+                        <td>Strategy to use when generating values for the field (NATIVE, SEQUENCE, IDENTITY, INCREMENT, UUIDSTRING, UUIDHEX)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>customValueStrategy</td>
+                        <td>String</td>
+                        <td>Name of a custom id generation strategy (e.g &quot;max&quot;, &quot;auid&quot;). 
+                            This overrides the value of &quot;valueStrategy&quot;</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>sequence</td>
+                        <td>String</td>
+                        <td>Name of the sequence when using valueStrategy of SEQUENCE - refer to @Sequence</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>types</td>
+                        <td>Class[]</td>
+                        <td>Type(s) of field (when using interfaces/reference types).</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>mappedBy</td>
+                        <td>String</td>
+                        <td>Field in other class when the relation is bidirectional to signify the owner of the relation</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table where this field is persisted.
+                            If this field is a collection/map/array then the table refers to a join table,
+                            otherwise this refers to a secondary table.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>name</td>
+                        <td>String</td>
+                        <td>Name of the field when defining an embedded field.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>columns</td>
+                        <td><a href="#Column">Column</a>[]</td>
+                        <td>ORM : Column definition(s) for the columns into which this field is persisted. This is
+                        only typically used when specifying columns of a field of an embedded class.</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>cacheable</td>
+                        <td>String</td>
+                        <td>Whether the field/property can be L2 cached. <b>From JDO2.2</b></td>
+                        <td><b>true</b> | false</td>
+                    </tr>
+                    <tr class="a">
+                        <td>extensions</td>
+                        <td><a href="#Extension">Extension</a>[]</td>
+                        <td>Vendor extensions</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>recursionDepth</td>
+                        <td>int</td>
+                        <td>Recursion depth for this field when fetching.
+                            <b>Only applicable when specified within @FetchGroup</b></td>
+                        <td>1</td>
+                    </tr>
+                    <tr class="a">
+                        <td>loadFetchGroup</td>
+                        <td>String</td>
+                        <td>Name of a fetch group to activate when a load of this field is initiated (due to it 
+                            being currently unloaded). Not used for getObjectById, queries, extents etc.
+                            Better to use @FetchGroup and define your groups</td>
+                        <td></td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    @Persistent(primaryKey=&quot;true&quot;)
+    String myField;
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="field_types.html">Field Types</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="Serialized"></a>
+            <div class="section"><h3>@Serialized<a name="aSerialized"></a></h3>
+                <p>
+                    This annotation is a shortcut for @Persistent(serialized=&quot;true&quot;) meaning that the field is stored 
+                    serialized. It has no attributes. Specified on the <b>field/method</b>.
+                </p>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    @Serialized
+    Object myField;
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="NotPersistent"></a>
+            <div class="section"><h3>@NotPersistent<a name="aNotPersistent"></a></h3>
+                <p>
+                    This annotation is a shortcut for @Persistent(persistenceModifier=PersistenceModifier.NONE) meaning that the 
+                    field/property is not persisted. It has no attributes. Specified on the <b>field/method</b>.
+                </p>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    @NotPersistent
+    String myOtherField;
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="field_types.html">Field Types</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="Transactional"></a>
+            <div class="section"><h3>@Transactional<a name="aTransactional"></a></h3>
+                <p>
+                    This annotation is a shortcut for @Persistent(persistenceModifier=PersistenceModifier.TRANSACTIONAL) meaning that the 
+                    field/property is not persisted yet managed. It has no attributes. Specified on the <b>field/method</b>.
+                </p>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    @Transactional
+    String myOtherField;
+    ...
+}</pre></div>
+                <p>See the documentation for <a href="field_types.html">Field Types</a></p>
+                <br />
+                <br />
+            </div>
+
+            <a name="Cacheable"></a>
+            <div class="section"><h3>@Cacheable<a name="aCacheable"></a></h3>
+                <p>
+                    This annotation is a shortcut for @Persistent(cacheable={value}) specifying whether
+                    the field/property can be cached in a Level 2 cache.
+                    Specified on the <b>field/property</b>. The default
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>value</td>
+                        <td>String</td>
+                        <td>Whether the field/property is cacheable</td>
+                        <td><b>true</b> | false</td>
+                    </tr>
+                </table>
+                <div class="source"><pre>
+public class MyClass
+{
+    @Cacheable(&quot;false&quot;)
+    Collection elements;
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="PrimaryKey"></a>
+            <div class="section"><h3>@PrimaryKey<a name="aPrimaryKey"></a></h3>
+                <p>
+                    This annotation is a shortcut for @Persistent(primaryKey=&quot;true&quot;) meaning that the field/property is 
+                    part of the primary key for the class. 
+                    No attributes are needed when specified like this. Specified on the <b>field/method</b>.
+                </p>
+                <div class="source"><pre>
+@PersistenceCapable
+public class MyClass
+{
+    @PrimaryKey
+    String myOtherField;
+    ...
+}</pre></div>
+                <br />
+                <br />
+            </div>
+
+            <a name="Element"></a>
+            <div class="section"><h3>@Element<a name="aElement"></a></h3>
+                <p>
+                    Annotation used to define the element for any collection/array to be persisted.
+                    Maps across to the &lt;collection&gt;, &lt;array&gt; and &lt;element&gt; MetaData elements.
+                    Specified on the <b>field/method</b>.
+                </p>
+                <table border="0" class="bodyTable">
+                    <tr class="a">
+                        <th>Attribute</th>
+                        <th>Type</th>
+                        <th>Description</th>
+                        <th>Default</th>
+                    </tr>
+                    <tr class="b">
+                        <td>types</td>
+                        <td>Class[]</td>
+                        <td>Type(s) of element</td>
+                        <td>When using an array is not needed. When using a collection will be taken from the collection definition if using 
+                            generics, otherwise must be specified.</td>
+                    </tr>
+                    <tr class="a">
+                        <td>embedded</td>
+                        <td>String</td>
+                        <td>Whether the element is embedded into a join table</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>serialized</td>
+                        <td>String</td>
+                        <td>Whether the element is serialised into the join table</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>dependent</td>
+                        <td>String</td>
+                        <td>Whether the element objects are dependent when deleting the owner collection/array</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>mappedBy</td>
+                        <td>String</td>
+                        <td>Field in the element class that represents this object (when the relation is bidirectional)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>embeddedMapping</td>
+                        <td><a href="#Embedded">Embedded</a>[]</td>
+                        <td>Definition of any embedding of the (persistable) element. Only 1 &quot;Embedded&quot; should be provided</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>table</td>
+                        <td>String</td>
+                        <td>ORM : Name of the table for this element</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>column</td>
+                        <td>String</td>
+                        <td>ORM : Name of the column for this element</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>foreignKey</td>
+                        <td>String</td>
+                        <td>ORM : Name of any foreign-key constraint to add</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">
+                        <td>generateForeignKey</td>
+                        <td>String</td>
+                        <td>ORM : Whether to generate a FK constraint for the element (when not specifying the name)</td>
+                        <td></td>
+                    </tr>
+                    <tr class="b">
+                        <td>deleteAction</td>
+                        <td>ForeignKeyAction</td>
+                        <td>ORM : Action to be applied to the foreign key for this element for action upon deletion</td>
+                        <td></td>
+                    </tr>
+                    <tr class="a">

[... 921 lines stripped ...]


Mime
View raw message