View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17  package javax.jdo.annotations;
    18
    19  import java.lang.annotation.ElementType;
    20  import java.lang.annotation.Retention;
    21  import java.lang.annotation.RetentionPolicy;
    22  import java.lang.annotation.Target;
    23
    24
    25  /**
    26   * Annotation for the key of a map relation.
    27   * Corresponds to the xml element "key".
    28   *
    29   * @version 2.1
    30   * @since 2.1
    31   */
    32  @Target({ElementType.FIELD, ElementType.METHOD})
    33  @Retention(RetentionPolicy.RUNTIME)
    34  public @interface Key
    35  {
    36      /**
    37       * Types of the keys. This can be determined if using JDK1.5 generics
    38       * but is required otherwise. Multiple types can be specified if the
    39       * implementation supports multiple types.
    40       * @return the types of keys
    41       */
    42      Class[] types() default {};
    43
    44      /**
    45       * Whether the key is to be stored serialized (into a single column of a
    46       * join table).
    47       * @return whether the key is to be stored serialized
    48       */
    49      String serialized() default "";
    50
    51      /** Whether this key is embedded.
    52       * @return whether this key is embedded
    53       */
    54      String embedded() default "";
    55
    56      /**
    57       * The embedded mapping for the key.
    58       * @return the embedded mapping for the key
    59       */
    60      Embedded[] embeddedMapping() default {};
    61
    62      /**
    63       * Whether the key is dependent on the owner (and will be deleted
    64       * when the owner is deleted).
    65       * @return whether the key is dependent on the owner
    66       */
    67      String dependent() default "";
    68
    69      /**
    70       * Name of the table for the key.
    71       * @return name of the table for the key
    72       */
    73      String table() default "";
    74
    75      /**
    76       * Name of the column to store the key in.
    77       * @return name of the column to store the key in
    78       */
    79      String column() default "";
    80
    81      /**
    82       * Delete action to apply to the foreign key for the key.
    83       * @return delete action to apply to the foreign key for the key
    84       */
    85      ForeignKeyAction deleteAction() default ForeignKeyAction.UNSPECIFIED;
    86
    87      /**
    88       * Update action to apply to the foreign key for the key.
    89       * @return update action to apply to the foreign key for the key
    90       */
    91      ForeignKeyAction updateAction() default ForeignKeyAction.UNSPECIFIED;
    92
    93      /**
    94       * Whether the value column(s) should be indexed.
    95       * @return whether the value column(s) should be indexed.
    96       */
    97      String indexed() default "";
    98
    99      /** The name of the index to generate.
    100      * @return the name of the index
    101      */
    102     String index() default "";
    103
    104     /**
    105      * Whether the element column(s) contents should be considered unique
    106      * @return whether the element column(s) contents should be considered unique
    107      */
    108     String unique() default "";
    109
    110     /**
    111      * The name of the unique key constraint to generate.
    112      * @return the name of the unique key constraint
    113      */
    114     String uniqueKey() default "";
    115
    116     /**
    117      * Name of a member in the value class where this key is stored.
    118      * @return the name of a member in the value class where this key is stored
    119      */
    120     String mappedBy() default "";
    121
    122     /**
    123      * The column(s) for the key
    124      * @return the column(s) for the key
    125      */
    126     Column[] columns() default {};
    127
    128     /** Generate or assume a foreign key constraint exists on the column
    129      * or columns associated with this join. Specify "true" or "false".
    130      * @return whether to generate or assume a foreign key constraint
    131      */
    132     String generateForeignKey() default "";
    133
    134     /** Name for a generated foreign key constraint.
    135      * @return the name of the generated foreign key constraint
    136      */
    137     String foreignKey() default "";
    138
    139     /** Vendor extensions.
    140      * @return the vendor extensions
    141      */
    142     Extension[] extensions() default {};
    143 }