6
6
*/
7
7
package org .hibernate .annotations ;
8
8
9
+ import org .hibernate .Incubating ;
9
10
import org .hibernate .dialect .Dialect ;
10
11
11
12
import java .lang .annotation .Annotation ;
20
21
*
21
22
* @author Gavin King
22
23
*/
24
+ @ Incubating
23
25
public interface DialectOverride {
24
26
27
+ /**
28
+ * Identifies a database version.
29
+ *
30
+ * @see org.hibernate.dialect.DatabaseVersion
31
+ */
32
+ @ Retention (RUNTIME )
33
+ @interface Version {
34
+ int major ();
35
+ int minor () default 0 ;
36
+ }
37
+
38
+ /**
39
+ * Specializes a {@link org.hibernate.annotations.Check}
40
+ * in a certain dialect.
41
+ */
25
42
@ Target ({METHOD , FIELD , TYPE })
26
43
@ Retention (RUNTIME )
27
44
@ OverridesAnnotation (org .hibernate .annotations .Check .class )
@@ -30,10 +47,16 @@ public interface DialectOverride {
30
47
* The {@link Dialect} in which this override applies.
31
48
*/
32
49
Class <? extends Dialect > dialect ();
50
+ Version before () default @ Version (major =Integer .MAX_VALUE );
51
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
33
52
34
53
org .hibernate .annotations .Check override ();
35
54
}
36
55
56
+ /**
57
+ * Specializes an {@link org.hibernate.annotations.OrderBy}
58
+ * in a certain dialect.
59
+ */
37
60
@ Target ({METHOD , FIELD })
38
61
@ Retention (RUNTIME )
39
62
@ OverridesAnnotation (org .hibernate .annotations .OrderBy .class )
@@ -42,10 +65,16 @@ public interface DialectOverride {
42
65
* The {@link Dialect} in which this override applies.
43
66
*/
44
67
Class <? extends Dialect > dialect ();
68
+ Version before () default @ Version (major =Integer .MAX_VALUE );
69
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
45
70
46
71
org .hibernate .annotations .OrderBy override ();
47
72
}
48
73
74
+ /**
75
+ * Specializes a {@link org.hibernate.annotations.ColumnDefault}
76
+ * in a certain dialect.
77
+ */
49
78
@ Target ({METHOD , FIELD })
50
79
@ Retention (RUNTIME )
51
80
@ OverridesAnnotation (org .hibernate .annotations .ColumnDefault .class )
@@ -54,10 +83,16 @@ public interface DialectOverride {
54
83
* The {@link Dialect} in which this override applies.
55
84
*/
56
85
Class <? extends Dialect > dialect ();
86
+ Version before () default @ Version (major =Integer .MAX_VALUE );
87
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
57
88
58
89
org .hibernate .annotations .ColumnDefault override ();
59
90
}
60
91
92
+ /**
93
+ * Specializes a {@link org.hibernate.annotations.GeneratedColumn}
94
+ * in a certain dialect.
95
+ */
61
96
@ Target ({METHOD , FIELD })
62
97
@ Retention (RUNTIME )
63
98
@ OverridesAnnotation (org .hibernate .annotations .GeneratedColumn .class )
@@ -66,10 +101,16 @@ public interface DialectOverride {
66
101
* The {@link Dialect} in which this override applies.
67
102
*/
68
103
Class <? extends Dialect > dialect ();
104
+ Version before () default @ Version (major =Integer .MAX_VALUE );
105
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
69
106
70
107
org .hibernate .annotations .GeneratedColumn override ();
71
108
}
72
109
110
+ /**
111
+ * Specializes a {@link jakarta.persistence.DiscriminatorColumn}
112
+ * in a certain dialect.
113
+ */
73
114
@ Target (TYPE )
74
115
@ Retention (RUNTIME )
75
116
@ OverridesAnnotation (jakarta .persistence .DiscriminatorColumn .class )
@@ -78,10 +119,16 @@ public interface DialectOverride {
78
119
* The {@link Dialect} in which this override applies.
79
120
*/
80
121
Class <? extends Dialect > dialect ();
122
+ Version before () default @ Version (major =Integer .MAX_VALUE );
123
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
81
124
82
125
jakarta .persistence .DiscriminatorColumn override ();
83
126
}
84
127
128
+ /**
129
+ * Specializes a {@link org.hibernate.annotations.Formula}
130
+ * in a certain dialect.
131
+ */
85
132
@ Target ({METHOD , FIELD })
86
133
@ Retention (RUNTIME )
87
134
@ OverridesAnnotation (org .hibernate .annotations .Formula .class )
@@ -90,10 +137,16 @@ public interface DialectOverride {
90
137
* The {@link Dialect} in which this override applies.
91
138
*/
92
139
Class <? extends Dialect > dialect ();
140
+ Version before () default @ Version (major =Integer .MAX_VALUE );
141
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
93
142
94
143
org .hibernate .annotations .Formula override ();
95
144
}
96
145
146
+ /**
147
+ * Specializes a {@link org.hibernate.annotations.JoinFormula}
148
+ * in a certain dialect.
149
+ */
97
150
@ Target ({METHOD , FIELD })
98
151
@ Retention (RUNTIME )
99
152
@ OverridesAnnotation (org .hibernate .annotations .JoinFormula .class )
@@ -102,10 +155,16 @@ public interface DialectOverride {
102
155
* The {@link Dialect} in which this override applies.
103
156
*/
104
157
Class <? extends Dialect > dialect ();
158
+ Version before () default @ Version (major =Integer .MAX_VALUE );
159
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
105
160
106
161
org .hibernate .annotations .JoinFormula override ();
107
162
}
108
163
164
+ /**
165
+ * Specializes a {@link org.hibernate.annotations.Where}
166
+ * in a certain dialect.
167
+ */
109
168
@ Target ({METHOD , FIELD , TYPE })
110
169
@ Retention (RUNTIME )
111
170
@ OverridesAnnotation (org .hibernate .annotations .Where .class )
@@ -114,10 +173,16 @@ public interface DialectOverride {
114
173
* The {@link Dialect} in which this override applies.
115
174
*/
116
175
Class <? extends Dialect > dialect ();
176
+ Version before () default @ Version (major =Integer .MAX_VALUE );
177
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
117
178
118
179
org .hibernate .annotations .Where override ();
119
180
}
120
181
182
+ /**
183
+ * Specializes {@link org.hibernate.annotations.Filters}
184
+ * in a certain dialect.
185
+ */
121
186
@ Target ({METHOD , FIELD , TYPE })
122
187
@ Retention (RUNTIME )
123
188
@ OverridesAnnotation (org .hibernate .annotations .Filters .class )
@@ -126,10 +191,16 @@ public interface DialectOverride {
126
191
* The {@link Dialect} in which this override applies.
127
192
*/
128
193
Class <? extends Dialect > dialect ();
194
+ Version before () default @ Version (major =Integer .MAX_VALUE );
195
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
129
196
130
197
org .hibernate .annotations .Filters override ();
131
198
}
132
199
200
+ /**
201
+ * Specializes {@link org.hibernate.annotations.FilterDefs}
202
+ * in a certain dialect.
203
+ */
133
204
@ Target ({PACKAGE , TYPE })
134
205
@ Retention (RUNTIME )
135
206
@ OverridesAnnotation (org .hibernate .annotations .FilterDefs .class )
@@ -138,13 +209,31 @@ public interface DialectOverride {
138
209
* The {@link Dialect} in which this override applies.
139
210
*/
140
211
Class <? extends Dialect > dialect ();
212
+ Version before () default @ Version (major =Integer .MAX_VALUE );
213
+ Version sameOrAfter () default @ Version (major =Integer .MIN_VALUE );
141
214
142
215
org .hibernate .annotations .FilterDefs override ();
143
216
}
144
217
218
+ /**
219
+ * Marks an annotation type as a dialect-specific override for
220
+ * some other annotation type.
221
+ * <p>
222
+ * The marked annotation must have the following members:
223
+ * <ul>
224
+ * <li>{@code Class<? extends Dialect> dialect()},
225
+ * <li>{@code Version before()},
226
+ * <li>{@code Version sameOrAfter()}, and
227
+ * <li>{@code A override()}, where {@code A} is the type
228
+ * of annotation which the marked annotation overrides.
229
+ * </ul>
230
+ */
145
231
@ Target ({ANNOTATION_TYPE })
146
232
@ Retention (RUNTIME )
147
233
@interface OverridesAnnotation {
234
+ /**
235
+ * The class of the annotation that is overridden.
236
+ */
148
237
Class <? extends Annotation > value ();
149
238
}
150
239
}
0 commit comments