-
Notifications
You must be signed in to change notification settings - Fork 48
/
hibernate-mapping.dtd
executable file
·350 lines (287 loc) · 15.3 KB
/
hibernate-mapping.dtd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
<?xml version='1.0' encoding='utf-8'?>
<!-- Hibernate Mapping DTD.
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping.dtd">
An instance of this XML document may contain mappings for an arbitrary
number of classes. The class mappings may contain associations to classes
mapped in the same document or in another document. No class may be
mapped more than once. Each document may also contains mappings for an
arbitrary number of toplevel collections. Toplevel collection roles may
be referenced by later class and collection mappings in the same document.
(They must be declared before they are used.)
-->
<!-- The document root. -->
<!ELEMENT hibernate-mapping (
(map|set|list|bag|array|primitive-array)*,
class*,
query*
)>
<!ATTLIST hibernate-mapping schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST hibernate-mapping default-cascade CDATA #IMPLIED> <!-- none|save/update|all, default: none -->
<!-- Root of an entity class hierarchy. Entities have their own tables. -->
<!ELEMENT class (
jcs-cache?,
(id|composite-id),
discriminator?,
(version|timestamp)?,
(property|many-to-one|one-to-one|collection|component|map|set|list|bag|array|primitive-array)*,
subclass*,
cache?
)>
<!ATTLIST class name CDATA #REQUIRED>
<!ATTLIST class table CDATA #IMPLIED> <!-- default: unqualified classname -->
<!ATTLIST class schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST class proxy CDATA #IMPLIED> <!-- default: no proxy interface -->
<!ATTLIST class mutable CDATA #IMPLIED> <!-- default: true -->
<!ATTLIST class persister CDATA #IMPLIED> <!-- default: cirrus.hibernate.persister.EntityPersister -->
<!ATTLIST class polymorphism CDATA #IMPLIED> <!-- implicit | explicit, default: implicit -->
<!ATTLIST class discriminator-value CDATA #IMPLIED> <!-- default: unqualified class name | none -->
<!-- Declares the id type, column and generation algorithm for an entity class.
If a name attribut is given, the id is exposed to the application through the
named property of the class. If not, the id is only exposed to the application
through Session.getID()-->
<!ELEMENT id (column?, generator)>
<!ATTLIST id name CDATA #IMPLIED>
<!ATTLIST id column CDATA #IMPLIED>
<!ATTLIST id type CDATA #IMPLIED>
<!ATTLIST id length CDATA #IMPLIED>
<!ATTLIST id unsaved-value CDATA #IMPLIED> <!-- any|none|null|"value", default: any -->
<!-- A composite key may be modelled by a java class with a property for each
key column. The class must implement java.io.Serializable and reimplement equals()
and hashCode(). -->
<!ELEMENT composite-id (property+)>
<!ATTLIST composite-id class CDATA #IMPLIED>
<!ATTLIST composite-id name CDATA #IMPLIED>
<!ATTLIST composite-id unsaved-value CDATA #IMPLIED> <!-- any|none|null, default: any -->
<!-- Polymorphic data requires a column holding a class discriminator value. This
value is not directly exposed to the application. -->
<!ELEMENT discriminator (column?)>
<!ATTLIST discriminator column CDATA #IMPLIED> <!-- default: "class"|none -->
<!ATTLIST discriminator type CDATA #IMPLIED> <!-- default: string -->
<!ATTLIST discriminator length CDATA #IMPLIED> <!-- default: 100 -->
<!-- Versioned data requires a column holding a version number. This is exposed to the
application through a property of the Java class. -->
<!ELEMENT version EMPTY>
<!ATTLIST version name CDATA #REQUIRED>
<!ATTLIST version column CDATA #IMPLIED>
<!ATTLIST version type CDATA #IMPLIED> <!-- default: integer -->
<!ELEMENT timestamp EMPTY>
<!ATTLIST timestamp name CDATA #REQUIRED>
<!ATTLIST timestamp column CDATA #IMPLIED>
<!-- Subclass declarations are nested beneath the root class declaration to achieve
polymorphic persistence. -->
<!ELEMENT subclass (
(property|many-to-one|one-to-one|collection|component|map|set|list|bag|array|primitive-array)*,
subclass*
)>
<!ATTLIST subclass name CDATA #REQUIRED>
<!ATTLIST subclass proxy CDATA #IMPLIED> <!-- default: no proxy interface -->
<!ATTLIST subclass discriminator-value CDATA #IMPLIED> <!-- default: unqualified class name | none -->
<!-- Property of an entity class or component, component-element, composite-id, etc.
JavaBeans style properties are mapped to table columns. -->
<!ELEMENT property (column*)>
<!ATTLIST property name CDATA #REQUIRED>
<!ATTLIST property type CDATA #IMPLIED>
<!ATTLIST property column CDATA #IMPLIED>
<!ATTLIST property length CDATA #IMPLIED>
<!ATTLIST property not-null CDATA #IMPLIED>
<!ATTLIST property unique CDATA #IMPLIED>
<!-- Declares an association between two entities (Or from a component, component element,
etc. to an entity). -->
<!ELEMENT many-to-one (column*)>
<!ATTLIST many-to-one name CDATA #REQUIRED>
<!ATTLIST many-to-one class CDATA #IMPLIED>
<!ATTLIST many-to-one column CDATA #IMPLIED>
<!ATTLIST many-to-one length CDATA #IMPLIED> <!-- DEPRECATED -->
<!ATTLIST many-to-one not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST many-to-one unique CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST many-to-one cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ATTLIST many-to-one outer-join CDATA #IMPLIED> <!-- true|false, default to hibernate.use_outer_join -->
<!-- Declares a one-to-one association between two entities (Or from a component,
component element, etc. to an entity). -->
<!ELEMENT one-to-one EMPTY>
<!ATTLIST one-to-one name CDATA #REQUIRED>
<!ATTLIST one-to-one class CDATA #IMPLIED>
<!ATTLIST one-to-one cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ATTLIST one-to-one outer-join CDATA #IMPLIED> <!-- true|false, default to hibernate.use_outer_join -->
<!ATTLIST one-to-one constrained CDATA #IMPLIED> <!-- true|false, default: false -->
<!-- Declared a property that holds instances of a toplevel collection role. -->
<!ELEMENT collection (column*)>
<!ATTLIST collection name CDATA #REQUIRED>
<!ATTLIST collection role CDATA #IMPLIED>
<!ATTLIST collection column CDATA #IMPLIED>
<!ATTLIST collection length CDATA #IMPLIED>
<!ATTLIST collection not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST collection unique CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST collection cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!-- A component is a user-defined class, persisted along with its containing entity
to the table of the entity class. JavaBeans style properties of the component are
mapped to columns of the table of the containing entity. A null component reference
is mapped to null values in all columns and vice versa. Components do not support
shared reference semantics. -->
<!ELEMENT component (
parent?,
(property|many-to-one|one-to-one|collection|component|map|set|list|bag|array|primitive-array)*
)>
<!ATTLIST component class CDATA #IMPLIED>
<!ATTLIST component name CDATA #REQUIRED>
<!-- The parent element maps a property of the component class as a pointer back to
the owning entity. -->
<!ELEMENT parent EMPTY>
<!ATTLIST parent name CDATA #REQUIRED>
<!-- Collection roles declared directly beneath the root element have their own key
and may be referenced by many collection or subcollection tags. Collection declarations
nested inside a class declaration indicate a foreign key relationship from the
collection table to the enclosing class. For toplevel collections, the name of
the role may be an arbitrary string. For nested collections, it must be the name
of the property containing the collection.
Note that the cascade attribute is ignored for toplevel collections. -->
<!ELEMENT map (
jcs-cache?,
key,
index,
(element|one-to-many|many-to-many|subcollection|composite-element)
)>
<!ATTLIST map role CDATA #REQUIRED>
<!ATTLIST map table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST map schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST map lazy CDATA #IMPLIED> <!-- default: false -->
<!ATTLIST map sort CDATA #IMPLIED> <!-- unsorted|natural, default: unsorted -->
<!ATTLIST map cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ATTLIST map order-by CDATA #IMPLIED> <!-- default: none -->
<!ELEMENT set (
jcs-cache?,
key,
(element|one-to-many|many-to-many|subcollection|composite-element)
)>
<!ATTLIST set role CDATA #REQUIRED>
<!ATTLIST set table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST set schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST set lazy CDATA #IMPLIED> <!-- default: false -->
<!ATTLIST set sort CDATA #IMPLIED> <!-- unsorted|natural, default: unsorted -->
<!ATTLIST set readonly CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST set cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ATTLIST set order-by CDATA #IMPLIED> <!-- default: none -->
<!ELEMENT bag (
jcs-cache?,
key,
(element|one-to-many|many-to-many|subcollection|composite-element)
)>
<!ATTLIST bag role CDATA #REQUIRED>
<!ATTLIST bag table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST bag schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST bag lazy CDATA #IMPLIED> <!-- default: false -->
<!ATTLIST bag readonly CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST bag cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ATTLIST bag order-by CDATA #IMPLIED> <!-- default: none -->
<!ELEMENT list (
jcs-cache?,
key,
index,
(element|one-to-many|many-to-many|subcollection|composite-element)
)>
<!ATTLIST list role CDATA #REQUIRED>
<!ATTLIST list table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST list schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST list lazy CDATA #IMPLIED> <!-- default: false -->
<!ATTLIST list cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ELEMENT array (
jcs-cache?,
key,
index,
(element|one-to-many|many-to-many|subcollection|composite-element)
)>
<!ATTLIST array role CDATA #REQUIRED>
<!ATTLIST array table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST array schema CDATA #IMPLIED> <!-- default: none -->
<!ATTLIST array element-class CDATA #IMPLIED>
<!ATTLIST array cascade CDATA #IMPLIED> <!-- none|all|save/update|delete, default: none -->
<!ELEMENT primitive-array (jcs-cache?, key, index, element)>
<!ATTLIST primitive-array role CDATA #REQUIRED>
<!ATTLIST primitive-array table CDATA #IMPLIED> <!-- default: rolename -->
<!ATTLIST primitive-array schema CDATA #IMPLIED> <!-- default: none -->
<!-- Declares the element type of a collection of basic type -->
<!ELEMENT element (column*)>
<!ATTLIST element column CDATA #IMPLIED>
<!ATTLIST element type CDATA #REQUIRED>
<!ATTLIST element length CDATA #IMPLIED>
<!ATTLIST element not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST element unique CDATA #IMPLIED> <!-- true|false, default: false -->
<!-- One to many association. This tag declares the entity-class
element type of a collection and specifies a one-to-many relational model -->
<!ELEMENT one-to-many EMPTY>
<!ATTLIST one-to-many class CDATA #REQUIRED>
<!-- No column declaration attributes required in this case. The primary
key column of the associated class is already mapped elsewhere.-->
<!-- Many to many association. This tag declares the entity-class
element type of a collection and specifies a many-to-many relational model -->
<!ELEMENT many-to-many (column*)>
<!ATTLIST many-to-many class CDATA #REQUIRED>
<!ATTLIST many-to-many column CDATA #IMPLIED>
<!ATTLIST many-to-many length CDATA #IMPLIED> <!-- DEPRECATED -->
<!ATTLIST many-to-many not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST many-to-many outer-join CDATA #IMPLIED> <!-- true|false, default to hibernate.use_outer_join -->
<!-- unique makes no sense here since it would mean a one-to-many -->
<!-- This tag declares that the element type of a collection is a named
toplevel collection role. -->
<!ELEMENT subcollection (column*)>
<!ATTLIST subcollection column CDATA #IMPLIED>
<!ATTLIST subcollection role CDATA #REQUIRED>
<!ATTLIST subcollection length CDATA #IMPLIED>
<!ATTLIST subcollection not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST subcollection unique CDATA #IMPLIED> <!-- true|false, default: false -->
<!-- A composite element allows a collection to hold instances of an arbitrary
class, without the requirement of joining to an entity table. Composite elements
have component semantics - no shared references and ad hoc null value semantics.
Composite elements may not hold nested collections. -->
<!ELEMENT composite-element (
(property|many-to-one|collection|nested-composite-element)*
)>
<!ATTLIST composite-element class CDATA #REQUIRED>
<!ELEMENT nested-composite-element (
(property|many-to-one|collection|nested-composite-element)*
)>
<!ATTLIST nested-composite-element class CDATA #REQUIRED>
<!ATTLIST nested-composite-element name CDATA #REQUIRED>
<!-- Declares the type, column name (and, in the case of toplevel collections,
an id generation strategy) for the key of a collection table. These keys are
never exposed to the application. For toplevel collections, Hibernate makes
no guarantee of key stability of a particular collection instance. -->
<!ELEMENT key (generator?, column*)>
<!ATTLIST key column CDATA #IMPLIED>
<!ATTLIST key type CDATA #IMPLIED>
<!ATTLIST key length CDATA #IMPLIED>
<!-- Declares the type and column mapping for a collection index (array or
list index, or key of a map). -->
<!ELEMENT index (column?)>
<!ATTLIST index column CDATA #REQUIRED>
<!ATTLIST index type CDATA #IMPLIED>
<!ATTLIST index length CDATA #IMPLIED>
<!-- Generators generate unique identifiers. The class attribute specifies a Java class
implementing an id generation algorithm. -->
<!ELEMENT generator (param*)>
<!ATTLIST generator class CDATA #REQUIRED>
<!ELEMENT param (#PCDATA)>
<!-- The column element is an alternative to column attributes and required for
mapping associations to classes with composite ids. -->
<!ELEMENT column EMPTY>
<!ATTLIST column name CDATA #REQUIRED>
<!ATTLIST column length CDATA #IMPLIED> <!-- default: 255 -->
<!ATTLIST column not-null CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST column unique CDATA #IMPLIED> <!-- true|false, default: false -->
<!ATTLIST column unique-key CDATA #IMPLIED> <!-- default: no unique key -->
<!ATTLIST column sql-type CDATA #IMPLIED> <!-- override default column type for hibernate type -->
<!ATTLIST column index CDATA #IMPLIED>
<!-- The jcs-cache element enables caching of an entity class. -->
<!ELEMENT jcs-cache EMPTY>
<!ATTLIST jcs-cache usage CDATA #REQUIRED> <!-- read-only | read-write -->
<!-- The cache element enables caching of an entity class.
semi-deprecated - use a jcs-cache. -->
<!ELEMENT cache EMPTY>
<!ATTLIST cache timeout CDATA #IMPLIED> <!-- default: never expire -->
<!ATTLIST cache impl-class CDATA #IMPLIED> <!-- default: hashbelt -->
<!ATTLIST cache type CDATA #REQUIRED> <!-- readonly | readwrite -->
<!-- The query element declares a named Hibernate query string -->
<!ELEMENT query (#PCDATA)>
<!ATTLIST query name CDATA #REQUIRED>