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 the discriminator of the class.
26 * Corresponds to the xml element "discriminator" of the "inheritance" element.
27 *
28 * @version 2.1
29 * @since 2.1
30 */
31 @Target(ElementType.TYPE)
32 @Retention(RetentionPolicy.RUNTIME)
33 public @interface Discriminator
34 {
35 /**
36 * Strategy to use for the discriminator. The discriminator determines
37 * the class associated with a row in the datastore.
38 * @return the strategy to use for the discriminator
39 */
40 DiscriminatorStrategy strategy()
41 default DiscriminatorStrategy.UNSPECIFIED;
42
43 /** Custom strategy to use for the discriminator.
44 * If customStrategy is non-empty, then strategy must be UNSPECIFIED.
45 * @return the custom strategy
46 */
47 String customStrategy() default "";
48
49 /**
50 * Whether the discriminator is indexed.
51 * @return whether the discriminator is indexed
52 */
53 String indexed() default "";
54
55 /**
56 * Name of the column for the discriminator
57 * @return the name of the column for the discriminator
58 */
59 String column() default "";
60
61 /**
62 * The value for the discriminator for objects of this class
63 * when using "value-map" strategy.
64 * @return The value for the discriminator for objects of this class
65 * when using "value-map" strategy
66 */
67 String value() default "";
68
69 /**
70 * The column(s) making up the discriminator.
71 * @return the column(s) making up the discriminator
72 */
73 Column[] columns() default {};
74 }