1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 * Annotation for a database foreign-key.
26 * Corresponds to the xml element "foreign-key".
27 *
28 * @version 2.1
29 * @since 2.1
30 */
31 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
32 @Retention(RetentionPolicy.RUNTIME)
33 public @interface ForeignKey
34 {
35 /** Name of the foreign key.
36 * @return the name of the foreign key
37 */
38 String name() default "";
39
40 /** Table for the foreign key. This is needed iff annotating a type where
41 * the foreign key is not defined on the primary table for the type.
42 * @return the table on which the foreign key is defined
43 */
44 String table() default "";
45
46 /** Whether this foreign key is deferred
47 * (constraint is checked only at commit).
48 * @return whether this foreign key is deferred
49 */
50 String deferred() default "";
51
52 /** Whether this foreign key is unique.
53 * @return whether this foreign key is unique
54 */
55 String unique() default "";
56
57 /** The delete action of this foreign key.
58 * @return the delete action of this foreign key
59 */
60 ForeignKeyAction deleteAction() default ForeignKeyAction.RESTRICT;
61
62 /** The update action of this foreign key.
63 * @return the update action of this foreign key
64 */
65 ForeignKeyAction updateAction() default ForeignKeyAction.RESTRICT;
66
67 /** Member (field and property) names that compose this foreign key.
68 * @return the member names that compose this foreign key
69 */
70 String[] members() default {};
71
72 /** Columns that compose this foreign key.
73 * @return the columns that compose this foreign key
74 */
75 Column[] columns() default {};
76 }