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 unique constraint. Used for database schema
26 * generation to create unique constraints. Also used to reorder database
27 * operations when flushing changes to avoid unique constraint violations.
28 * Corresponds to the xml element "unique".
29 *
30 * @version 2.1
31 * @since 2.1
32 */
33 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
34 @Retention(RetentionPolicy.RUNTIME)
35 public @interface Unique
36 {
37 /** Name of the unique constraint.
38 * @return the name of the unique constraint
39 */
40 String name() default "";
41
42 /** Table for the unique constraint. This is needed iff annotating a type
43 * where this unique constraint is not for the primary table for
44 * the persistent class or interface.
45 * @return the table on which the unique constraint is defined
46 */
47 String table() default "";
48
49 /** Whether this unique constraint is deferred until commit.
50 * @return whether this unique constraint is deferred until commit
51 */
52 String deferred() default "";
53
54 /** Member (field and property) names that compose this unique constraint.
55 * @return member names that compose this unique constraint
56 */
57 String[] members() default {};
58
59 /** Columns that compose this unique constraint.
60 * @return columns that compose this unique constraint
61 */
62 Column[] columns() default {};
63 }