Added: websites/production/openjpa/content/builds/2.4.2/apache-openjpa/docs/jpa_overview_meta_xml.html ============================================================================== --- websites/production/openjpa/content/builds/2.4.2/apache-openjpa/docs/jpa_overview_meta_xml.html (added) +++ websites/production/openjpa/content/builds/2.4.2/apache-openjpa/docs/jpa_overview_meta_xml.html Fri Jan 6 19:19:20 2017 @@ -0,0 +1,1749 @@ +<html><head> + <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> + <title>3. XML Schema</title><base href="display"><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><link rel="home" href="manual.html" title="Apache OpenJPA 2.4 User's Guide"><link rel="up" href="jpa_overview_meta.html" title="Chapter 5. Metadata"><link rel="prev" href="jpa_overview_meta_field.html" title="2. Field and Property Metadata"><link rel="next" href="jpa_overview_meta_complete.html" title="4. Conclusion"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3. + XML Schema + </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="jpa_overview_meta_field.html">Prev</a> </td><th width="60%" align="center">Chapter 5. + Metadata + </th><td width="20%" align="right"> <a accesskey="n" href="jpa_overview_meta_complete.html">Next</a></td></tr></table><hr></div><div class="section" id="jpa_overview_meta_xml"><div class="titlepage"><div><div><h2 class="title" style="clear: both">3. + XML Schema + </h2></div></div></div> + + <a class="indexterm" name="d5e1964"></a> + <a class="indexterm" name="d5e1967"></a> + <p> +The latest revision of the version 2.0 orm schema is presented below. Version +2.0 of the schema must be used if JPA 2.0 elements are specified as XML +metadata. Many of the elements in the schema relate to object/relational +mapping rather than metadata; these elements are discussed in +<a class="xref" href="jpa_overview_mapping.html" title="Chapter 13. Mapping Metadata">Chapter 13, <i> + Mapping Metadata + </i></a>. Version 1.0 of the orm schema can be +found at <a class="ulink" href="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" target="_top">http://java.sun.com/xml/ns/persistence/orm_1_0.xsd</a>. + </p> +<pre class="programlisting"> +<?xml version="1.0" encoding="UTF-8"?> + <!-- Java Persistence API object/relational mapping file schema --> +<xsd:schema targetNamespace="http://java.sun.com/xml/ns/persistence/orm" + xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" attributeFormDefault="unqualified" + version="2.0"> + + <xsd:annotation> + <xsd:documentation> + @(#)orm_2_0.xsd 2.0 October 1 2009 + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation> + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + + Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved. + + The contents of this file are subject to the terms of either the + GNU General Public License Version 2 only ("GPL") or the Common + Development and Distribution License("CDDL") (collectively, the + "License"). You may not use this file except in compliance with + the License. You can obtain a copy of the License at + https://glassfish.dev.java.net/public/CDDL+GPL.html or + glassfish/bootstrap/legal/LICENSE.txt. See the License for the + specific language governing permissions and limitations under the + License. + + When distributing the software, include this License Header + Notice in each file and include the License file at + glassfish/bootstrap/legal/LICENSE.txt. Sun designates this + particular file as subject to the "Classpath" exception as + provided by Sun in the GPL Version 2 section of the License file + that accompanied this code. If applicable, add the following + below the License Header, with the fields enclosed by brackets [] + replaced by your own identifying information: + "Portions Copyrighted [year] [name of copyright owner]" + + Contributor(s): + + If you wish your version of this file to be governed by only the + CDDL or only the GPL Version 2, indicate your decision by adding + "[Contributor] elects to include this software in this + distribution under the [CDDL or GPL Version 2] license." If you + don't indicate a single choice of license, a recipient has the + option to distribute your version of this file under either the + CDDL, the GPL Version 2 or to extend the choice of license to its + licensees as provided above. However, if you add GPL Version 2 + code and therefore, elected the GPL Version 2 license, then the + option applies only if the new code is made subject to such + option by the copyright holder. + + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation> + <![CDATA[ + This is the XML Schema for the persistence object/relational + mapping file. + The file may be named "META-INF/orm.xml" in the persistence + archive or it may be named some other name which would be + used to locate the file as resource on the classpath. + Object/relational mapping files must indicate the object/relational + mapping file schema by using the persistence namespace: + http://java.sun.com/xml/ns/persistence + and indicate the version of the schema by + using the version element as shown below: + <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm + http://java.sun.com/xml/ns/persistence/orm/orm_2_0.xsd" + version="2.0"> + ... + </entity-mappings> + ]]> + </xsd:documentation> + </xsd:annotation> + + <xsd:complexType name="emptyType" /> + <xsd:simpleType name="versionType"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="[0-9]+(\.[0-9]+)*" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:element name="entity-mappings"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation> + The entity-mappings element is the root element of a mapping + file. It contains the following four types of elements: + 1. The persistence-unit-metadata element contains metadata + for the entire persistence unit. It is undefined if this element + occurs in multiple mapping files within the same + persistence unit. + 2. The package, schema, catalog and access elements apply to all of + the entity, mapped-superclass and embeddable + elements defined in + the same file in which they occur. + 3. The sequence-generator, table-generator, named-query, + named-native-query and sql-result-set-mapping + elements are global + to the persistence unit. It is undefined to have more than one + sequence-generator or table-generator of the same + name in the same + or different mapping files in a persistence unit. It is also + undefined to have more than one named-query, + named-native-query, or + result-set-mapping of the same name in the same or different mapping + files in a persistence unit. + 4. The entity, mapped-superclass and embeddable elements each define + the mapping information for a managed persistent + class. The mapping + information contained in these elements may be complete or it may + be partial. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="persistence-unit-metadata" + type="orm:persistence-unit-metadata" minOccurs="0" /> + <xsd:element name="package" type="xsd:string" + minOccurs="0" /> + <xsd:element name="schema" type="xsd:string" + minOccurs="0" /> + <xsd:element name="catalog" type="xsd:string" + minOccurs="0" /> + <xsd:element name="access" type="orm:access-type" + minOccurs="0" /> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="named-query" type="orm:named-query" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="named-native-query" type="orm:named-native-query" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sql-result-set-mapping" + type="orm:sql-result-set-mapping" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element name="mapped-superclass" type="orm:mapped-superclass" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="entity" type="orm:entity" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="embeddable" type="orm:embeddable" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="version" type="orm:versionType" + fixed="2.0" use="required" /> + </xsd:complexType> + </xsd:element> + <!-- **************************************************** --> + <xsd:complexType name="persistence-unit-metadata"> + <xsd:annotation> + <xsd:documentation> + Metadata that applies to the persistence unit and not just to + the mapping file in which it is contained. + If the xml-mapping-metadata-complete element is specified, + the complete set of mapping metadata for the persistence unit + is contained in the XML mapping files for the persistence unit. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="xml-mapping-metadata-complete" + type="orm:emptyType" minOccurs="0" /> + <xsd:element name="persistence-unit-defaults" + type="orm:persistence-unit-defaults" minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="persistence-unit-defaults"> + <xsd:annotation> + <xsd:documentation> + These defaults are applied to the persistence unit as a whole + unless they are overridden by local annotation or XML + element settings. + schema - Used as the schema for all tables, secondary tables, join + tables, collection tables, sequence generators, and table + generators that apply to the persistence unit + catalog - Used as the catalog for all tables, secondary tables, join + tables, collection tables, sequence generators, and + table generators that apply to the persistence unit + delimited-identifiers - Used to treat database identifiers as + delimited identifiers. + access - Used as the access type for all managed classes in + the persistence unit + cascade-persist - Adds cascade-persist to the set of cascade options + in all entity relationships of the persistence unit + entity-listeners - List of default entity listeners to be invoked + on each entity in the persistence unit. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="schema" type="xsd:string" + minOccurs="0" /> + <xsd:element name="catalog" type="xsd:string" + minOccurs="0" /> + <xsd:element name="delimited-identifiers" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="access" type="orm:access-type" + minOccurs="0" /> + <xsd:element name="cascade-persist" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="entity"> + <xsd:annotation> + <xsd:documentation> + Defines the settings and mappings for an entity. Is allowed to be + sparsely populated and used in conjunction with the annotations. + Alternatively, the metadata-complete attribute can be + used to + indicate that no annotations on the entity class (and its fields + or properties) are to be processed. If this is the case then + the defaulting rules for the entity and its subelements will + be recursively applied. + @Target(TYPE) @Retention(RUNTIME) + public @interface Entity { + String name() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="table" type="orm:table" + minOccurs="0" /> + <xsd:element name="secondary-table" type="orm:secondary-table" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element name="id-class" type="orm:id-class" + minOccurs="0" /> + <xsd:element name="inheritance" type="orm:inheritance" + minOccurs="0" /> + <xsd:element name="discriminator-value" type="orm:discriminator-value" + minOccurs="0" /> + <xsd:element name="discriminator-column" type="orm:discriminator-column" + minOccurs="0" /> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0" /> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0" /> + <xsd:element name="named-query" type="orm:named-query" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="named-native-query" type="orm:named-native-query" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="sql-result-set-mapping" type="orm:sql-result-set-mapping" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="exclude-default-listeners" + type="orm:emptyType" minOccurs="0" /> + <xsd:element name="exclude-superclass-listeners" + type="orm:emptyType" minOccurs="0" /> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0" /> + <xsd:element name="pre-persist" type="orm:pre-persist" + minOccurs="0" /> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0" /> + <xsd:element name="pre-remove" type="orm:pre-remove" + minOccurs="0" /> + <xsd:element name="post-remove" type="orm:post-remove" + minOccurs="0" /> + <xsd:element name="pre-update" type="orm:pre-update" + minOccurs="0" /> + <xsd:element name="post-update" type="orm:post-update" + minOccurs="0" /> + <xsd:element name="post-load" type="orm:post-load" + minOccurs="0" /> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="association-override" type="orm:association-override" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="attributes" type="orm:attributes" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="class" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="cacheable" type="xsd:boolean" /> + <xsd:attribute name="metadata-complete" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="access-type"> + <xsd:annotation> + <xsd:documentation> + This element determines how the persistence provider accesses the + state of an entity or embedded object. + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="PROPERTY" /> + <xsd:enumeration value="FIELD" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="association-override"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface AssociationOverride { + String name(); + JoinColumn[] joinColumns() default{}; + JoinTable joinTable() default @JoinTable; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" minOccurs="0" /> + <xsd:choice> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0" /> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="attribute-override"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface AttributeOverride { + String name(); + Column column(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="column" type="orm:column" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="attributes"> + <xsd:annotation> + <xsd:documentation> + This element contains the entity field or property mappings. + It may be sparsely populated to include only a subset of the + fields or properties. If metadata-complete for the entity is true + then the remainder of the attributes will be defaulted according + to the default rules. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="id" type="orm:id" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="embedded-id" type="orm:embedded-id" + minOccurs="0" /> + </xsd:choice> + <xsd:element name="basic" type="orm:basic" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="version" type="orm:version" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="many-to-one" type="orm:many-to-one" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="one-to-many" type="orm:one-to-many" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="one-to-one" type="orm:one-to-one" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="many-to-many" type="orm:many-to-many" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="element-collection" type="orm:element-collection" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="embedded" type="orm:embedded" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="transient" type="orm:transient" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="basic"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Basic { + FetchType fetch() default EAGER; + boolean optional() default true; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="lob" type="orm:lob" + minOccurs="0" /> + <xsd:element name="temporal" type="orm:temporal" + minOccurs="0" /> + <xsd:element name="enumerated" type="orm:enumerated" + minOccurs="0" /> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="optional" type="xsd:boolean" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="cascade-type"> + <xsd:annotation> + <xsd:documentation> + public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH, + DETACH}; + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="cascade-all" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="cascade-persist" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="cascade-merge" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="cascade-remove" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="cascade-refresh" type="orm:emptyType" + minOccurs="0" /> + <xsd:element name="cascade-detach" type="orm:emptyType" + minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="collection-table"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface CollectionTable { + String name() default ""; + String catalog() default ""; + String schema() default ""; + JoinColumn[] joinColumns() default {}; + UniqueConstraint[] uniqueConstraints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="column"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Column { + String name() default ""; + boolean unique() default false; + boolean nullable() default true; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + int length() default 255; + int precision() default 0; // decimal precision + int scale() default 0; // decimal scale + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="unique" type="xsd:boolean" /> + <xsd:attribute name="nullable" type="xsd:boolean" /> + <xsd:attribute name="insertable" type="xsd:boolean" /> + <xsd:attribute name="updatable" type="xsd:boolean" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + <xsd:attribute name="table" type="xsd:string" /> + <xsd:attribute name="length" type="xsd:int" /> + <xsd:attribute name="precision" type="xsd:int" /> + <xsd:attribute name="scale" type="xsd:int" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="column-result"> + <xsd:annotation> + <xsd:documentation> + @Target({}) @Retention(RUNTIME) + public @interface ColumnResult { + String name(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="discriminator-column"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface DiscriminatorColumn { + String name() default "DTYPE"; + DiscriminatorType discriminatorType() default STRING; + String columnDefinition() default ""; + int length() default 31; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="discriminator-type" type="orm:discriminator-type" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + <xsd:attribute name="length" type="xsd:int" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="discriminator-type"> + <xsd:annotation> + <xsd:documentation> + public enum DiscriminatorType { STRING, CHAR, INTEGER }; + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="STRING" /> + <xsd:enumeration value="CHAR" /> + <xsd:enumeration value="INTEGER" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:simpleType name="discriminator-value"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface DiscriminatorValue { + String value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="element-collection"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface ElementCollection { + Class targetClass() default void.class; + FetchType fetch() default LAZY; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="order-by" type="orm:order-by" + minOccurs="0" /> + <xsd:element name="order-column" type="orm:order-column" + minOccurs="0" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key" type="orm:map-key" + minOccurs="0" /> + <xsd:sequence> + <xsd:element name="map-key-class" type="orm:map-key-class" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="map-key-temporal" + type="orm:temporal" minOccurs="0" /> + <xsd:element name="map-key-enumerated" + type="orm:enumerated" minOccurs="0" /> + <xsd:element name="map-key-attribute-override" + type="orm:attribute-override" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key-column" + type="orm:map-key-column" minOccurs="0" /> + <xsd:element name="map-key-join-column" + type="orm:map-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + </xsd:sequence> + </xsd:choice> + <xsd:choice> + <xsd:sequence> + <xsd:element name="column" type="orm:column" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="temporal" type="orm:temporal" + minOccurs="0" /> + <xsd:element name="enumerated" type="orm:enumerated" + minOccurs="0" /> + <xsd:element name="lob" type="orm:lob" + minOccurs="0" /> + </xsd:choice> + </xsd:sequence> + <xsd:sequence> + <xsd:element name="attribute-override" + type="orm:attribute-override" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element name="association-override" + type="orm:association-override" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:choice> + <xsd:element name="collection-table" type="orm:collection-table" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="target-class" type="xsd:string" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="embeddable"> + <xsd:annotation> + <xsd:documentation> + Defines the settings and mappings for embeddable objects. Is + allowed to be sparsely populated and used in conjunction with + the annotations. Alternatively, the metadata-complete attribute + can be used to indicate that no annotations are to be processed + in the class. If this is the case then the defaulting rules will + be recursively applied. + @Target({TYPE}) @Retention(RUNTIME) + public @interface Embeddable {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="attributes" type="orm:embeddable-attributes" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="metadata-complete" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="embeddable-attributes"> + <xsd:sequence> + <xsd:element name="basic" type="orm:basic" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="many-to-one" type="orm:many-to-one" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="one-to-many" type="orm:one-to-many" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="one-to-one" type="orm:one-to-one" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="many-to-many" type="orm:many-to-many" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="element-collection" type="orm:element-collection" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="embedded" type="orm:embedded" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="transient" type="orm:transient" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="embedded"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Embedded {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="association-override" type="orm:association-override" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="embedded-id"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface EmbeddedId {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="attribute-override" type="orm:attribute-override" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="entity-listener"> + <xsd:annotation> + <xsd:documentation> + Defines an entity listener to be invoked at lifecycle events + for the entities that list this listener. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="pre-persist" type="orm:pre-persist" + minOccurs="0" /> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0" /> + <xsd:element name="pre-remove" type="orm:pre-remove" + minOccurs="0" /> + <xsd:element name="post-remove" type="orm:post-remove" + minOccurs="0" /> + <xsd:element name="pre-update" type="orm:pre-update" + minOccurs="0" /> + <xsd:element name="post-update" type="orm:post-update" + minOccurs="0" /> + <xsd:element name="post-load" type="orm:post-load" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="entity-listeners"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface EntityListeners { + Class[] value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="entity-listener" type="orm:entity-listener" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="entity-result"> + <xsd:annotation> + <xsd:documentation> + @Target({}) @Retention(RUNTIME) + public @interface EntityResult { + Class entityClass(); + FieldResult[] fields() default {}; + String discriminatorColumn() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="field-result" type="orm:field-result" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="entity-class" type="xsd:string" + use="required" /> + <xsd:attribute name="discriminator-column" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="enum-type"> + <xsd:annotation> + <xsd:documentation> + public enum EnumType { + ORDINAL, + STRING + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ORDINAL" /> + <xsd:enumeration value="STRING" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:simpleType name="enumerated"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Enumerated { + EnumType value() default ORDINAL; + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="orm:enum-type" /> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:simpleType name="fetch-type"> + <xsd:annotation> + <xsd:documentation> + public enum FetchType { LAZY, EAGER }; + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="LAZY" /> + <xsd:enumeration value="EAGER" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="field-result"> + <xsd:annotation> + <xsd:documentation> + @Target({}) @Retention(RUNTIME) + public @interface FieldResult { + String name(); + String column(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="column" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="generated-value"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface GeneratedValue { + GenerationType strategy() default AUTO; + String generator() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="strategy" type="orm:generation-type" /> + <xsd:attribute name="generator" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="generation-type"> + <xsd:annotation> + <xsd:documentation> + public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO }; + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="TABLE" /> + <xsd:enumeration value="SEQUENCE" /> + <xsd:enumeration value="IDENTITY" /> + <xsd:enumeration value="AUTO" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="id"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Id {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" + minOccurs="0" /> + <xsd:element name="generated-value" type="orm:generated-value" + minOccurs="0" /> + <xsd:element name="temporal" type="orm:temporal" + minOccurs="0" /> + <xsd:element name="table-generator" type="orm:table-generator" + minOccurs="0" /> + <xsd:element name="sequence-generator" type="orm:sequence-generator" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="id-class"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface IdClass { + Class value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="class" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="inheritance"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface Inheritance { + InheritanceType strategy() default SINGLE_TABLE; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="strategy" type="orm:inheritance-type" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="inheritance-type"> + <xsd:annotation> + <xsd:documentation> + public enum InheritanceType + { SINGLE_TABLE, JOINED, TABLE_PER_CLASS}; + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="SINGLE_TABLE" /> + <xsd:enumeration value="JOINED" /> + <xsd:enumeration value="TABLE_PER_CLASS" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="join-column"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface JoinColumn { + String name() default ""; + String referencedColumnName() default ""; + boolean unique() default false; + boolean nullable() default true; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="referenced-column-name" type="xsd:string" /> + <xsd:attribute name="unique" type="xsd:boolean" /> + <xsd:attribute name="nullable" type="xsd:boolean" /> + <xsd:attribute name="insertable" type="xsd:boolean" /> + <xsd:attribute name="updatable" type="xsd:boolean" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + <xsd:attribute name="table" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="join-table"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface JoinTable { + String name() default ""; + String catalog() default ""; + String schema() default ""; + JoinColumn[] joinColumns() default {}; + JoinColumn[] inverseJoinColumns() default {}; + UniqueConstraint[] uniqueConstraints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="inverse-join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="lob"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Lob {} + </xsd:documentation> + </xsd:annotation> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="lock-mode-type"> + <xsd:annotation> + <xsd:documentation> + public enum LockModeType { READ, WRITE, OPTIMISTIC, + OPTIMISTIC_FORCE_INCREMENT, PESSIMISTIC_READ, + PESSIMISTIC_WRITE, + PESSIMISTIC_FORCE_INCREMENT, NONE}; + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="READ" /> + <xsd:enumeration value="WRITE" /> + <xsd:enumeration value="OPTIMISTIC" /> + <xsd:enumeration value="OPTIMISTIC_FORCE_INCREMENT" /> + <xsd:enumeration value="PESSIMISTIC_READ" /> + <xsd:enumeration value="PESSIMISTIC_WRITE" /> + <xsd:enumeration value="PESSIMISTIC_FORCE_INCREMENT" /> + <xsd:enumeration value="NONE" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="many-to-many"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface ManyToMany { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default LAZY; + String mappedBy() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="order-by" type="orm:order-by" + minOccurs="0" /> + <xsd:element name="order-column" type="orm:order-column" + minOccurs="0" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key" type="orm:map-key" + minOccurs="0" /> + <xsd:sequence> + <xsd:element name="map-key-class" type="orm:map-key-class" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="map-key-temporal" + type="orm:temporal" minOccurs="0" /> + <xsd:element name="map-key-enumerated" + type="orm:enumerated" minOccurs="0" /> + <xsd:element name="map-key-attribute-override" + type="orm:attribute-override" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key-column" + type="orm:map-key-column" minOccurs="0" /> + <xsd:element name="map-key-join-column" + type="orm:map-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + </xsd:sequence> + </xsd:choice> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0" /> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="target-entity" type="xsd:string" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="mapped-by" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="many-to-one"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface ManyToOne { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default EAGER; + boolean optional() default true; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0" /> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="target-entity" type="xsd:string" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="optional" type="xsd:boolean" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="maps-id" type="xsd:string" /> + <xsd:attribute name="id" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="map-key"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface MapKey { + String name() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="map-key-class"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface MapKeyClass { + Class value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="class" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="map-key-column"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface MapKeyColumn { + String name() default ""; + boolean unique() default false; + boolean nullable() default false; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + int length() default 255; + int precision() default 0; // decimal precision + int scale() default 0; // decimal scale + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="unique" type="xsd:boolean" /> + <xsd:attribute name="nullable" type="xsd:boolean" /> + <xsd:attribute name="insertable" type="xsd:boolean" /> + <xsd:attribute name="updatable" type="xsd:boolean" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + <xsd:attribute name="table" type="xsd:string" /> + <xsd:attribute name="length" type="xsd:int" /> + <xsd:attribute name="precision" type="xsd:int" /> + <xsd:attribute name="scale" type="xsd:int" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="map-key-join-column"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface MapKeyJoinColumn { + String name() default ""; + String referencedColumnName() default ""; + boolean unique() default false; + boolean nullable() default false; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + String table() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="referenced-column-name" type="xsd:string" /> + <xsd:attribute name="unique" type="xsd:boolean" /> + <xsd:attribute name="nullable" type="xsd:boolean" /> + <xsd:attribute name="insertable" type="xsd:boolean" /> + <xsd:attribute name="updatable" type="xsd:boolean" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + <xsd:attribute name="table" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="mapped-superclass"> + <xsd:annotation> + <xsd:documentation> + Defines the settings and mappings for a mapped superclass. Is + allowed to be sparsely populated and used in conjunction with + the annotations. Alternatively, the metadata-complete attribute + can be used to indicate that no annotations are to be processed + If this is the case then the defaulting rules will be recursively + applied. + @Target(TYPE) @Retention(RUNTIME) + public @interface MappedSuperclass{} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="id-class" type="orm:id-class" + minOccurs="0" /> + <xsd:element name="exclude-default-listeners" + type="orm:emptyType" minOccurs="0" /> + <xsd:element name="exclude-superclass-listeners" + type="orm:emptyType" minOccurs="0" /> + <xsd:element name="entity-listeners" type="orm:entity-listeners" + minOccurs="0" /> + <xsd:element name="pre-persist" type="orm:pre-persist" + minOccurs="0" /> + <xsd:element name="post-persist" type="orm:post-persist" + minOccurs="0" /> + <xsd:element name="pre-remove" type="orm:pre-remove" + minOccurs="0" /> + <xsd:element name="post-remove" type="orm:post-remove" + minOccurs="0" /> + <xsd:element name="pre-update" type="orm:pre-update" + minOccurs="0" /> + <xsd:element name="post-update" type="orm:post-update" + minOccurs="0" /> + <xsd:element name="post-load" type="orm:post-load" + minOccurs="0" /> + <xsd:element name="attributes" type="orm:attributes" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="class" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="metadata-complete" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="named-native-query"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface NamedNativeQuery { + String name(); + String query(); + QueryHint[] hints() default {}; + Class resultClass() default void.class; + String resultSetMapping() default ""; //named SqlResultSetMapping + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="query" type="xsd:string" /> + <xsd:element name="hint" type="orm:query-hint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="result-class" type="xsd:string" /> + <xsd:attribute name="result-set-mapping" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="named-query"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface NamedQuery { + String name(); + String query(); + LockModeType lockMode() default NONE; + QueryHint[] hints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="query" type="xsd:string" /> + <xsd:element name="lock-mode" type="orm:lock-mode-type" + minOccurs="0" /> + <xsd:element name="hint" type="orm:query-hint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="one-to-many"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OneToMany { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default LAZY; + String mappedBy() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="order-by" type="orm:order-by" + minOccurs="0" /> + <xsd:element name="order-column" type="orm:order-column" + minOccurs="0" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key" type="orm:map-key" + minOccurs="0" /> + <xsd:sequence> + <xsd:element name="map-key-class" type="orm:map-key-class" + minOccurs="0" /> + <xsd:choice> + <xsd:element name="map-key-temporal" + type="orm:temporal" minOccurs="0" /> + <xsd:element name="map-key-enumerated" + type="orm:enumerated" minOccurs="0" /> + <xsd:element name="map-key-attribute-override" + type="orm:attribute-override" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + <xsd:choice> + <xsd:element name="map-key-column" + type="orm:map-key-column" minOccurs="0" /> + <xsd:element name="map-key-join-column" + type="orm:map-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:choice> + </xsd:sequence> + </xsd:choice> + <xsd:choice> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0" /> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="target-entity" type="xsd:string" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="mapped-by" type="xsd:string" /> + <xsd:attribute name="orphan-removal" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="one-to-one"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OneToOne { + Class targetEntity() default void.class; + CascadeType[] cascade() default {}; + FetchType fetch() default EAGER; + boolean optional() default true; + String mappedBy() default ""; + boolean orphanRemoval() default false; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:choice> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element name="join-column" type="orm:join-column" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="join-table" type="orm:join-table" + minOccurs="0" /> + </xsd:choice> + <xsd:element name="cascade" type="orm:cascade-type" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="target-entity" type="xsd:string" /> + <xsd:attribute name="fetch" type="orm:fetch-type" /> + <xsd:attribute name="optional" type="xsd:boolean" /> + <xsd:attribute name="access" type="orm:access-type" /> + <xsd:attribute name="mapped-by" type="xsd:string" /> + <xsd:attribute name="orphan-removal" type="xsd:boolean" /> + <xsd:attribute name="maps-id" type="xsd:string" /> + <xsd:attribute name="id" type="xsd:boolean" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="order-by"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OrderBy { + String value() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string" /> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="order-column"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface OrderColumn { + String name() default ""; + boolean nullable() default true; + boolean insertable() default true; + boolean updatable() default true; + String columnDefinition() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="nullable" type="xsd:boolean" /> + <xsd:attribute name="insertable" type="xsd:boolean" /> + <xsd:attribute name="updatable" type="xsd:boolean" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="post-load"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostLoad {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="post-persist"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostPersist {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="post-remove"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostRemove {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="post-update"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PostUpdate {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="pre-persist"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PrePersist {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="pre-remove"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PreRemove {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="pre-update"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD}) @Retention(RUNTIME) + public @interface PreUpdate {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="method-name" type="xsd:string" + use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="primary-key-join-column"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface PrimaryKeyJoinColumn { + String name() default ""; + String referencedColumnName() default ""; + String columnDefinition() default ""; + } + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="referenced-column-name" type="xsd:string" /> + <xsd:attribute name="column-definition" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="query-hint"> + <xsd:annotation> + <xsd:documentation> + @Target({}) @Retention(RUNTIME) + public @interface QueryHint { + String name(); + String value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="value" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="secondary-table"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface SecondaryTable { + String name(); + String catalog() default ""; + String schema() default ""; + PrimaryKeyJoinColumn[] pkJoinColumns() default {}; + UniqueConstraint[] uniqueConstraints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="primary-key-join-column" + type="orm:primary-key-join-column" minOccurs="0" + maxOccurs="unbounded" /> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="sequence-generator"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface SequenceGenerator { + String name(); + String sequenceName() default ""; + String catalog() default ""; + String schema() default ""; + int initialValue() default 1; + int allocationSize() default 50; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="sequence-name" type="xsd:string" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + <xsd:attribute name="initial-value" type="xsd:int" /> + <xsd:attribute name="allocation-size" type="xsd:int" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="sql-result-set-mapping"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface SqlResultSetMapping { + String name(); + EntityResult[] entities() default {}; + ColumnResult[] columns() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="entity-result" type="orm:entity-result" + minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="column-result" type="orm:column-result" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="table"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE}) @Retention(RUNTIME) + public @interface Table { + String name() default ""; + String catalog() default ""; + String schema() default ""; + UniqueConstraint[] uniqueConstraints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="table-generator"> + <xsd:annotation> + <xsd:documentation> + @Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) + public @interface TableGenerator { + String name(); + String table() default ""; + String catalog() default ""; + String schema() default ""; + String pkColumnName() default ""; + String valueColumnName() default ""; + String pkColumnValue() default ""; + int initialValue() default 0; + int allocationSize() default 50; + UniqueConstraint[] uniqueConstraints() default {}; + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="description" type="xsd:string" + minOccurs="0" /> + <xsd:element name="unique-constraint" type="orm:unique-constraint" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="table" type="xsd:string" /> + <xsd:attribute name="catalog" type="xsd:string" /> + <xsd:attribute name="schema" type="xsd:string" /> + <xsd:attribute name="pk-column-name" type="xsd:string" /> + <xsd:attribute name="value-column-name" type="xsd:string" /> + <xsd:attribute name="pk-column-value" type="xsd:string" /> + <xsd:attribute name="initial-value" type="xsd:int" /> + <xsd:attribute name="allocation-size" type="xsd:int" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:simpleType name="temporal"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Temporal { + TemporalType value(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="orm:temporal-type" /> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:simpleType name="temporal-type"> + <xsd:annotation> + <xsd:documentation> + public enum TemporalType { + DATE, // java.sql.Date + TIME, // java.sql.Time + TIMESTAMP // java.sql.Timestamp + } + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="DATE" /> + <xsd:enumeration value="TIME" /> + <xsd:enumeration value="TIMESTAMP" /> + </xsd:restriction> + </xsd:simpleType> + <!-- **************************************************** --> + <xsd:complexType name="transient"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Transient {} + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="unique-constraint"> + <xsd:annotation> + <xsd:documentation> + @Target({}) @Retention(RUNTIME) + public @interface UniqueConstraint { + String name() default ""; + String[] columnNames(); + } + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column-name" type="xsd:string" + maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + <!-- **************************************************** --> + <xsd:complexType name="version"> + <xsd:annotation> + <xsd:documentation> + @Target({METHOD, FIELD}) @Retention(RUNTIME) + public @interface Version {} + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="column" type="orm:column" + minOccurs="0" /> + <xsd:element name="temporal" type="orm:temporal" + minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="access" type="orm:access-type" /> + </xsd:complexType>
[... 9 lines stripped ...]
