blob: 5a8da841a3a8b86ef1290de78eccf2dc8575d680 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Copyright (c) 2008, 2009 Oracle. All rights reserved.
-->
<!--
This program and the accompanying materials are made available under the terms
of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
which accompanies this distribution. The Eclipse Public License is available
at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution
License is available at http://www.eclipse.org/org/documents/edl-v10.php.
-->
<!--
Contributors: dclarke - Java Persistence API 2.0 Public Draft Specification
and licensing terms available from http://jcp.org/en/jsr/detail?id=317
-->
<!--
EARLY ACCESS - PUBLIC DRAFT This is an implementation of an early-draft
specification developed under the Java Community Process (JCP) and is made
available for testing and evaluation purposes only. The code is not
compatible with any specification of the JCP.
-->
<!-- Java Persistence API object/relational mapping file schema -->
<xsd:schema xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://java.sun.com/xml/ns/persistence/orm" version="2.0">
<xsd:annotation>
<xsd:documentation>
@(#)orm_2_0.xsd 2.0 August 27 2008
</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:element name="entity-mappings">
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>
The entity-mappings element is the root element of an 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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="persistence-unit-metadata" type="orm:persistence-unit-metadata"/>
<xsd:element minOccurs="0" name="package" type="xsd:string"/>
<xsd:element minOccurs="0" name="schema" type="xsd:string"/>
<xsd:element minOccurs="0" name="catalog" type="xsd:string"/>
<xsd:element minOccurs="0" name="access" type="orm:access-type"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="sequence-generator" type="orm:sequence-generator"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="table-generator" type="orm:table-generator"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="named-query" type="orm:named-query"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="named-native-query" type="orm:named-native-query"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="sql-result-set-mapping" type="orm:sql-result-set-mapping"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="mapped-superclass" type="orm:mapped-superclass"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="entity" type="orm:entity"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="embeddable" type="orm:embeddable"/>
</xsd:sequence>
<xsd:attribute fixed="2.0" name="version" type="orm:versionType" 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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="xml-mapping-metadata-complete" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="persistence-unit-defaults" type="orm:persistence-unit-defaults"/>
</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,
collection tables, sequence generators, and table generators
that apply to the persistence unit
catalog - Used as the catalog for all tables, secondary tables,
collection tables, sequence generators, and table generators
that apply to the persistence unit
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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="schema" type="xsd:string"/>
<xsd:element minOccurs="0" name="catalog" type="xsd:string"/>
<xsd:element minOccurs="0" name="access" type="orm:access-type"/>
<xsd:element minOccurs="0" name="cascade-persist" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="entity-listeners" type="orm:entity-listeners"/>
</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 sub-elements will
be recursively applied.
@Target(TYPE) @Retention(RUNTIME)
public @interface Entity {
String name() default "";
}
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="table" type="orm:table"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="secondary-table" type="orm:secondary-table"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="primary-key-join-column" type="orm:primary-key-join-column"/>
<xsd:element minOccurs="0" name="id-class" type="orm:id-class"/>
<xsd:element minOccurs="0" name="inheritance" type="orm:inheritance"/>
<xsd:element minOccurs="0" name="discriminator-value" type="orm:discriminator-value"/>
<xsd:element minOccurs="0" name="discriminator-column" type="orm:discriminator-column"/>
<xsd:element minOccurs="0" name="sequence-generator" type="orm:sequence-generator"/>
<xsd:element minOccurs="0" name="table-generator" type="orm:table-generator"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="named-query" type="orm:named-query"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="named-native-query" type="orm:named-native-query"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="sql-result-set-mapping" type="orm:sql-result-set-mapping"/>
<xsd:element minOccurs="0" name="exclude-default-listeners" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="exclude-superclass-listeners" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="entity-listeners" type="orm:entity-listeners"/>
<xsd:element minOccurs="0" name="pre-persist" type="orm:pre-persist"/>
<xsd:element minOccurs="0" name="post-persist" type="orm:post-persist"/>
<xsd:element minOccurs="0" name="pre-remove" type="orm:pre-remove"/>
<xsd:element minOccurs="0" name="post-remove" type="orm:post-remove"/>
<xsd:element minOccurs="0" name="pre-update" type="orm:pre-update"/>
<xsd:element minOccurs="0" name="post-update" type="orm:post-update"/>
<xsd:element minOccurs="0" name="post-load" type="orm:post-load"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="attribute-override" type="orm:attribute-override"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="association-override" type="orm:association-override"/>
<xsd:element minOccurs="0" name="attributes" type="orm:attributes"/>
</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="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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
<xsd:element minOccurs="0" name="join-table" type="orm:join-table"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:choice>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="id" type="orm:id"/>
<xsd:element minOccurs="0" name="embedded-id" type="orm:embedded-id"/>
</xsd:choice>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="basic" type="orm:basic"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="version" type="orm:version"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="many-to-one" type="orm:many-to-one"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="one-to-many" type="orm:one-to-many"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="one-to-one" type="orm:one-to-one"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="many-to-many" type="orm:many-to-many"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="element-collection" type="orm:element-collection"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="embedded" type="orm:embedded"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="transient" type="orm:transient"/>
</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 minOccurs="0" name="column" type="orm:column"/>
<xsd:choice>
<xsd:element minOccurs="0" name="lob" type="orm:lob"/>
<xsd:element minOccurs="0" name="temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="enumerated" type="orm:enumerated"/>
</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};
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element minOccurs="0" name="cascade-all" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="cascade-persist" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="cascade-merge" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="cascade-remove" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="cascade-refresh" type="orm:emptyType"/>
</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 maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="unique-constraint" type="orm:unique-constraint"/>
</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 minOccurs="0" name="order-by" type="orm:order-by"/>
<xsd:element minOccurs="0" name="order-column" type="orm:order-column"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key" type="orm:map-key"/>
<xsd:sequence>
<xsd:element minOccurs="0" name="map-key-class" type="orm:map-key-class"/>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="map-key-enumerated" type="orm:enumerated"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-attribute-override" type="orm:attribute-override"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-column" type="orm:map-key-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-join-column" type="orm:map-key-join-column"/>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
<xsd:choice>
<xsd:sequence>
<xsd:element minOccurs="0" name="column" type="orm:column"/>
<xsd:choice>
<xsd:element minOccurs="0" name="temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="enumerated" type="orm:enumerated"/>
<xsd:element minOccurs="0" name="lob" type="orm:lob"/>
</xsd:choice>
</xsd:sequence>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="attribute-override" type="orm:attribute-override"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="association-override" type="orm:association-override"/>
</xsd:sequence>
</xsd:choice>
<xsd:element minOccurs="0" name="collection-table" type="orm:collection-table"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="attributes" type="orm:embeddable-attributes"/>
</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 maxOccurs="unbounded" minOccurs="0" name="basic" type="orm:basic"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="many-to-one" type="orm:many-to-one"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="one-to-many" type="orm:one-to-many"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="one-to-one" type="orm:one-to-one"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="many-to-many" type="orm:many-to-many"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="element-collection" type="orm:element-collection"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="embedded" type="orm:embedded"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="transient" type="orm:transient"/>
</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 maxOccurs="unbounded" minOccurs="0" name="attribute-override" type="orm:attribute-override"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="association-override" type="orm:association-override"/>
</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 maxOccurs="unbounded" minOccurs="0" name="attribute-override" type="orm:attribute-override"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="pre-persist" type="orm:pre-persist"/>
<xsd:element minOccurs="0" name="post-persist" type="orm:post-persist"/>
<xsd:element minOccurs="0" name="pre-remove" type="orm:pre-remove"/>
<xsd:element minOccurs="0" name="post-remove" type="orm:post-remove"/>
<xsd:element minOccurs="0" name="pre-update" type="orm:pre-update"/>
<xsd:element minOccurs="0" name="post-update" type="orm:post-update"/>
<xsd:element minOccurs="0" name="post-load" type="orm:post-load"/>
</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 maxOccurs="unbounded" minOccurs="0" name="entity-listener" type="orm:entity-listener"/>
</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 maxOccurs="unbounded" minOccurs="0" name="field-result" type="orm:field-result"/>
</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 minOccurs="0" name="column" type="orm:column"/>
<xsd:element minOccurs="0" name="generated-value" type="orm:generated-value"/>
<xsd:element minOccurs="0" name="temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="table-generator" type="orm:table-generator"/>
<xsd:element minOccurs="0" name="sequence-generator" type="orm:sequence-generator"/>
</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 maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="inverse-join-column" type="orm:join-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="unique-constraint" type="orm:unique-constraint"/>
</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: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 minOccurs="0" name="order-by" type="orm:order-by"/>
<xsd:element minOccurs="0" name="order-column" type="orm:order-column"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key" type="orm:map-key"/>
<xsd:sequence>
<xsd:element minOccurs="0" name="map-key-class" type="orm:map-key-class"/>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="map-key-enumerated" type="orm:enumerated"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-attribute-override" type="orm:attribute-override"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-column" type="orm:map-key-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-join-column" type="orm:map-key-join-column"/>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
<xsd:element minOccurs="0" name="join-table" type="orm:join-table"/>
<xsd:element minOccurs="0" name="cascade" type="orm:cascade-type"/>
</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 maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
<xsd:element minOccurs="0" name="join-table" type="orm:join-table"/>
</xsd:choice>
<xsd:element minOccurs="0" name="cascade" type="orm:cascade-type"/>
</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-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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="id-class" type="orm:id-class"/>
<xsd:element minOccurs="0" name="exclude-default-listeners" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="exclude-superclass-listeners" type="orm:emptyType"/>
<xsd:element minOccurs="0" name="entity-listeners" type="orm:entity-listeners"/>
<xsd:element minOccurs="0" name="pre-persist" type="orm:pre-persist"/>
<xsd:element minOccurs="0" name="post-persist" type="orm:post-persist"/>
<xsd:element minOccurs="0" name="pre-remove" type="orm:pre-remove"/>
<xsd:element minOccurs="0" name="post-remove" type="orm:post-remove"/>
<xsd:element minOccurs="0" name="pre-update" type="orm:pre-update"/>
<xsd:element minOccurs="0" name="post-update" type="orm:post-update"/>
<xsd:element minOccurs="0" name="post-load" type="orm:post-load"/>
<xsd:element minOccurs="0" name="attributes" type="orm:attributes"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element name="query" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="hint" type="orm:query-hint"/>
</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();
QueryHint[] hints() default {};
}
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element minOccurs="0" name="description" type="xsd:string"/>
<xsd:element name="query" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="hint" type="orm:query-hint"/>
</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 minOccurs="0" name="order-by" type="orm:order-by"/>
<xsd:element minOccurs="0" name="order-column" type="orm:order-column"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key" type="orm:map-key"/>
<xsd:sequence>
<xsd:element minOccurs="0" name="map-key-class" type="orm:map-key-class"/>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-temporal" type="orm:temporal"/>
<xsd:element minOccurs="0" name="map-key-enumerated" type="orm:enumerated"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-attribute-override" type="orm:attribute-override"/>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="map-key-column" type="orm:map-key-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="map-key-join-column" type="orm:map-key-join-column"/>
</xsd:choice>
</xsd:sequence>
</xsd:choice>
<xsd:choice>
<xsd:element minOccurs="0" name="join-table" type="orm:join-table"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
</xsd:choice>
<xsd:element minOccurs="0" name="cascade" type="orm:cascade-type"/>
</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 maxOccurs="unbounded" minOccurs="0" name="primary-key-join-column" type="orm:primary-key-join-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="join-column" type="orm:join-column"/>
<xsd:element minOccurs="0" name="join-table" type="orm:join-table"/>
</xsd:choice>
<xsd:element minOccurs="0" name="cascade" type="orm:cascade-type"/>
</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="mapped-by-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 "";
String table() 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:attribute name="table" 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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 maxOccurs="unbounded" minOccurs="0" name="primary-key-join-column" type="orm:primary-key-join-column"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="unique-constraint" type="orm:unique-constraint"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="entity-result" type="orm:entity-result"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="column-result" type="orm:column-result"/>
</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 maxOccurs="unbounded" minOccurs="0" name="unique-constraint" type="orm:unique-constraint"/>
</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 minOccurs="0" name="description" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="unique-constraint" type="orm:unique-constraint"/>
</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[] columnNames();
}
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="column-name" type="xsd:string"/>
</xsd:sequence>
</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 minOccurs="0" name="column" type="orm:column"/>
<xsd:element minOccurs="0" name="temporal" type="orm:temporal"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="access" type="orm:access-type"/>
</xsd:complexType>
<!-- **************************************************** -->
<xsd:simpleType name="versionType">
<xsd:restriction base="xsd:token">
<xsd:pattern value="[0-9]+(\.[0-9]+)*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>