From: Subject: =?Windows-1252?Q?Chapter=A05.=A0Basic_O/R_Mapping?= Date: Sat, 28 Apr 2012 14:43:34 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_005E_01CD254D.4A12ADA0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 This is a multi-part message in MIME format. ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html =EF=BB=BF Chapter=C2=A05.=C2=A0= Basic O/R Mapping

Hibernate.orgCommunity=20 Documentation

5.1.=20 Mapping declaration

5.1.1.=20 Doctype
5.1.2.=20 Hibernate-mapping

5.1.3.=20 Class
5.1.4.=20 id
5.1.5.=20 Enhanced
identifier generators
5.1.6.=20 Identifier generator optimization

5.1.7.=20 composite-id
5.1.8.=20 Discriminator

5.1.9.=20 Version (optional)
5.1.10.=20 Timestamp
(optional)
5.1.11.=20 Property
5.1.12.=20 Many-to-one

5.1.13.=20 One-to-one
5.1.14.=20 Natural-id

5.1.15.=20 Component and dynamic-component
5.1.16.=20
Properties
5.1.17.=20 Subclass
5.1.18.=20 Joined-subclass

5.1.19.=20 Union-subclass
5.1.20.=20 Join
5.1.21.=20
Key
5.1.22.=20 Column and formula elements
5.1.23.=20
Import
5.1.24.=20 Any
5.2.=20 Hibernate types

5.2.1.=20 Entities and values
5.2.2.=20
Basic value types
5.2.3.=20 Custom value types
5.3.=20
Mapping a class more than once
5.4.=20 SQL quoted identifiers

5.5.=20 Metadata alternatives
5.5.1.=20 Using
XDoclet markup
5.5.2.=20 Using JDK 5.0 Annotations
5.6.=20
Generated properties
5.7.=20 Auxiliary database objects

Object/relational
mappings are usually defined in an XML document. = The=20 mapping
document is designed to be readable and hand-editable. The = mapping=20 language
is Java-centric, meaning that mappings are constructed around=20 persistent
class declarations and not table declarations.

Please note that
even though many Hibernate users choose to write the = XML by=20 hand,
a number of tools exist to generate the mapping document. These = include=20 XDoclet,
Middlegen and AndroMDA.

Here is an example mapping:

<?xml version=3D"1.0"?>
<!DOCTYPE
hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN" = "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping
package=3D"eg"> <class name=3D"Cat"
table=3D"cats" discriminator-value=3D"C">
<id name=3D"id"> <generator
class=3D"native"/> </id>
<discriminator column=3D"subclass" type=3D"character"/>
<property name=3D"weight"/>
<property name=3D"birthdate" type=3D"date"
not-null=3D"true" update=3D"false"/>
<property name=3D"color" type=3D"eg.types.ColorUserType"
not-null=3D"true" update=3D"false"/>
<property name=3D"sex" not-null=3D"true"
update=3D"false"/> <property
name=3D"litterId" column=3D"litterId"
update=3D"false"/> <many-to-one
name=3D"mother" column=3D"mother_id"
update=3D"false"/> <set name=3D"kittens"
inverse=3D"true" order-by=3D"litter_id">
<key column=3D"mother_id"/>
<one-to-many class=3D"Cat"/>
</set> <subclass name=3D"DomesticCat"
discriminator-value=3D"D">
<property name=3D"name"
type=3D"string"/> </subclass>
</class> <class name=3D"Dog">
<!-- mapping for Dog could go here --> </class> </hibernate-mapping>

We
will now discuss the content of the mapping document. We will only
= describe, however, the document elements and attributes that
are used by = Hibernate at runtime. The mapping document also contains
some extra = optional=20 attributes and elements that affect the
database schemas exported by the = schema=20 export tool (for example,
the not-null = attribute).=20

5.1.1. Doctype

All
XML mappings should declare the doctype shown. The actual DTD can
= be=20 found at the URL above, in the directory hibernate-x.x.x/src/org/hibernate
, or in hibernate3.jar. Hibernate will always look for = the DTD
in=20 its classpath first. If you experience lookups of the DTD using
an = Internet=20 connection, check the DTD declaration against the
contents of your = classpath.=20

5.1.2. Hibernate-mapping

=

This
element has several optional attributes. The schema and catalog = attributes=20 specify
that tables referred to in this mapping belong to the named = schema=20 and/or
catalog. If they are specified, tablenames will be qualified by = the
given=20 schema and catalog names. If they are missing, tablenames
will be = unqualified.=20 The default-cascade attribute specifies
= what cascade=20 style should be assumed for properties and collections
that do not = specify a=20 cascade attribute. By default, the auto-import
attribute allows you to use = unqualified class=20 names in the
query language.

<hibernate-mapping
         schema=3D"schemaName"
3D(1) catalog=3D"catalogName"
3D(2) default-cascade=3D"cascade_style"
3D(3) default-access=3D"field|property|ClassName"
3D(4) default-lazy=3D"true|false" 3D(5)
auto-import=3D"true|false" 3D(6) package=3D"package.name"
3D(7) />



3D1=20

schema
(optional): the name of a = database=20 schema.

3D2=20

catalog (optional): the name of a = database=20
catalog.

3D3=20

default-cascade (optional - = defaults
to=20 none): a default cascade style. =

3D4=20

default-access (optional - = defaults to property): the strategy
Hibernate should = use for=20 accessing all properties. It
can be a custom implementation of = PropertyAccessor.

3D5=20

default-lazy (optional - defaults = to true): the default
value for unspecified = lazy attributes of class and collection = mappings.=20

3D6=20

auto-import (optional - defaults = to
true): specifies whether we can use = unqualified class=20
names of classes in this mapping in the query language. =

3D7=20

package (optional): specifies a = package=20
prefix to use for unqualified class names in the mapping document.
=

If you have two persistent classes with the same unqualified
name, = you should=20 set auto-import=3D"false". An exception = will
result if=20 you attempt to assign two classes to the same "imported"
name.

The hibernate-mapping element allows you = to nest=20 several
persistent <class> mappings, = as shown=20 above. It is, however,
good practice (and expected by some tools) to map = only a=20 single
persistent class, or a single class hierarchy, in one mapping = file
and=20 name it after the persistent superclass. For example, Cat.hbm.xml,
Dog.hbm.xml, or if=20 using inheritance, Animal.hbm.xml. =

5.1.3. Class

You
can declare a persistent class using the class=20 element. For example:

<class
        name=3D"ClassName"                          
3D(1) table=3D"tableName" 3D(2)
discriminator-value=3D"discriminator_value" 3D(3) mutable=3D"true|false"
3D(4) schema=3D"owner"
3D(5) catalog=3D"catalog"
3D(6) proxy=3D"ProxyInterface"
3D(7) dynamic-update=3D"true|false" 3D(8)
dynamic-insert=3D"true|false" 3D(9) select-before-update=3D"true|false"
3D(10) polymorphism=3D"implicit|explicit"
3D(11) where=3D"arbitrary sql where condition" 3D(12)
persister=3D"PersisterClass" 3D(13) batch-size=3D"N"
3D(14) optimistic-lock=3D"none|version|dirty|all"
3D(15) lazy=3D"true|false" (16)
entity-name=3D"EntityName" (17)
check=3D"arbitrary sql check condition" (18) rowid=3D"rowid"
(19) subselect=3D"SQL expression"
(20) abstract=3D"true|false"
(21) node=3D"element-name" />




3D1=20

name (optional): the fully = qualified Java=20
class name of the persistent class or interface. If this attribute
= is=20 missing, it is assumed that the mapping is for a non-POJO
entity.=20

3D2=20

table (optional - defaults to
the=20 unqualified class name): the name of its database table.
=

3D3=20

discriminator-value (optional - = defaults
to=20 the class name): a value that distinguishes individual
subclasses = that is=20 used for polymorphic behavior. Acceptable
values include null and not = null.=20

3D4=20

mutable (optional - defaults to = true): specifies that instances
of the = class are=20 (not) mutable.

3D5=20

schema (optional): overrides the = schema name=20 specified
by the root <hibernate-mapping>=20 element.

3D6=20

catalog (optional): overrides the = catalog=20
name specified by the root <hibernate-mapping> element.
=

3D7=20

proxy (optional): specifies an = interface
to=20 use for lazy initializing proxies. You can specify the
name of the = class=20 itself.

3D8=20

dynamic-update
(optional - = defaults to false): specifies that UPDATE SQL should
be generated at runtime = and can=20 contain only those columns
whose values have changed. =

3D9=20

dynamic-insert
(optional - = defaults to false): specifies that INSERT SQL should
be generated at runtime = and contain=20 only the columns
whose values are not null.

3D10=20

select-before-update
(optional - = defaults to=20 false): specifies that Hibernate
= should never perform an SQL UPDATE unless it is certain that an
object = is=20 actually modified. Only when a transient object
has been = associated with a=20 new session using update(),
will = Hibernate=20 perform an extra SQL SELECT to = determine
if an=20 UPDATE is actually required. =

3D11=20

polymorphism (optional - defaults = to implicit): determines
whether implicit or = explicit=20 query polymorphism is used.

3D12=20

where (optional): specifies an = arbitrary
SQL=20 WHERE condition to be used when = retrieving=20
objects of this class.

3D13=20

persister (optional):
specifies a = custom=20 ClassPersister.

3D14=20

batch-size (optional - defaults to = 1): specifies a "batch
size" for fetching = instances=20 of this class by identifier.

3D15=20

optimistic-lock (optional - = defaults to=20
version): determines the optimistic = locking=20 strategy.

(16)

lazy (optional): lazy fetching can = be=20
disabled by setting lazy=3D"false". =

(17)

entity-name (optional - defaults = to the=20 class name):
Hibernate3 allows a class to be mapped multiple = times,=20
potentially to different tables. It also allows entity mappings
= that are=20 represented by Maps or XML at the Java level.
In these cases, you = should=20 provide an explicit arbitrary
name for the entity. See Section 4.4,=20 =E2=80=9CDynamic
models=E2=80=9D and Chapter 18,=20 XML = Mapping for
more=20 information.

(18)

check (optional):
an SQL = expression used to=20 generate a multi-row check
= constraint=20 for automatic schema generation.

(19)

rowid (optional): Hibernate can = use ROWIDs=20
on databases. On Oracle, for example, Hibernate can use the rowid
extra column for fast updates once = this option=20 has been
set to rowid. A ROWID is an=20 implementation detail and represents
the physical location of a = stored=20 tuple.

(20)

subselect (optional): maps an = immutable and=20
read-only entity to a database subselect. This is useful if you
= want to=20 have a view instead of a base table. See below
for more = information.=20

(21)

abstract
(optional): is used to = mark=20 abstract superclasses in
<union-subclass>=20 hierarchies.

It is acceptable for
the named persistent class to be an interface. = You can=20 declare
implementing classes of that interface using the <subclass>
element. You can persist any = static inner class. Specify the class
= name using=20 the standard form i.e. e.g.Foo$Bar.

Immutable
classes, mutable=3D"false", = cannot be=20 updated or deleted by
the application. This allows Hibernate to make = some minor=20 performance
optimizations.

The optional proxy attribute enables = lazy=20 initialization
of persistent instances of the class. Hibernate will = initially=20 return
CGLIB proxies that implement the named interface. The persistent = object=20 will
load when a method of the proxy is invoked. See "Initializing = collections=20 and
proxies" below.

Implicit polymorphism means = that=20 instances
of the class will be returned by a query that names any = superclass
or=20 implemented interface or class, and that instances of any subclass
of = the class=20 will be returned by a query that names the class
itself. Explicit polymorphism means that class = instances=20 will
be returned only by queries that explicitly name that class. = Queries
that=20 name the class will return only instances of subclasses mapped
inside = this <class> declaration as a <subclass> or
<joined-subclass>. For most purposes, the = default=20 polymorphism=3D"implicit"
is appropriate. = Explicit=20 polymorphism is useful when two different
classes are mapped to the same = table=20 This allows a "lightweight"
class that contains a subset of the table = columns.=20

The persister
attribute lets you = customize the=20 persistence strategy used
for the class. You can, for example, specify = your own=20 subclass
of org.hibernate.persister.EntityPersister,=20 or you can even provide
a completely new implementation of the interface = org.hibernate.persister.ClassPersister
that = implements, for=20 example, persistence via stored procedure
calls, serialization to flat = files or=20 LDAP. See org.hibernate.test.CustomPersister
for a=20 simple example of "persistence" to a Hashtable.

The dynamic-update
and dynamic-insert settings are not inherited by = subclasses, so=20 they
can also be specified on the <subclass> or=20 <joined-subclass>
elements. Although = these=20 settings can increase performance
in some cases, they can actually = decrease=20 performance in others.

Use of select-before-update will usually = decrease=20 performance.
It is useful to prevent a database update trigger being = called=20 unnecessarily
if you reattach a graph of detached instances to a Session.

If you
enable dynamic-update, you will = have a=20 choice of optimistic
locking strategies:

  • version: check the version/timestamp
    = columns=20

  • all: check all columns

  • dirty: check
    the changed columns, = allowing some=20 concurrent updates


  • none: do not use optimistic locking=20

It is strongly recommended
= that you use=20 version/timestamp columns for optimistic locking
with Hibernate. This = strategy=20 optimizes performance and correctly
handles modifications made to = detached=20 instances (i.e. when
Session.merge() is = used).

There is no difference between a view
and a base table for a = Hibernate=20 mapping. This is transparent
at the database level, although some DBMS = do not=20 support views
properly, especially with updates. Sometimes you want to = use a=20 view,
but you cannot create one in the database (i.e. with a legacy = schema).
In=20 this case, you can map an immutable and read-only entity to
a given SQL=20 subselect expression:

<class =
name=3D"Summary">

<subselect> select item.name, max(bid.amount), count(*)
from item join bid on bid.item_id =3D item.id
group by item.name </subselect> <synchronize
table=3D"item"/> <synchronize table=3D"bid"/> <id
name=3D"name"/> ... </class>

Declare the tables to
synchronize this entity with, ensuring that = auto-flush=20 happens
correctly and that queries against the derived entity do not = return=20 stale
data. The <subselect> is = available both=20 as an attribute
and a nested mapping element.

5.1.4. id

Mapped classes
must declare = the primary=20 key column of the database table.
Most classes will also have a = JavaBeans-style=20 property holding
the unique identifier of an instance. The <id> element defines
the mapping from that = property=20 to the primary key column.

<id

name=3D"propertyName"
= 3D(1) type=3D"typename"
= 3D(2) column=3D"column_name"
= 3D(3) unsaved-value=3D"null|any|none|undefined|id_value"
= 3D(4) access=3D"field|property|ClassName">
= 3D(5) node=3D"element-name|@attribute-name|element/@attribute|."
<generator class=3D"generatorClass"/> </id>

3D1=20

name (optional): the name of the = identifier=20
property.

3D2=20

type (optional): a name that
= indicates the=20 Hibernate type.

3D3=20

column (optional - defaults to the = property=20 name): the
name of the primary key column.

3D4=20

unsaved-value
(optional - defaults = to a=20 "sensible" value): an identifier
property value that indicates an = instance=20 is newly instantiated
(unsaved), distinguishing it from detached = instances=20
that were saved or loaded in a previous session.

3D5=20

access (optional - defaults to = property): the strategy Hibernate
should = use for=20 accessing the property value. =

If
the name attribute is missing, it is = assumed=20 that the class
has no identifier property.

The unsaved-value attribute is almost
= never needed=20 in Hibernate3.

There is an alternative <composite-id>=20 declaration
that allows access to legacy data with composite keys. Its = use
is=20 strongly discouraged for anything else.

5.1.4.1. Generator

<= /DIV>

The
optional <generator> child = element names=20 a Java class
used to generate unique identifiers for instances of the = persistent=20 class.
If any parameters are required to configure or initialize the = generator=20 instance,
they are passed using the <param>=20 element.

<id name=3D"id"
= type=3D"long" column=3D"cat_id"> <generator class=3D"org.hibernate.id.TableHiLoGenerator">
<param name=3D"table">uid_table</param>
<param = name=3D"column">next_hi_value_column</param>
</generator> </id>

All generators implement the
interface org.hibernate.id.IdentifierGenerator. This is a = very
simple=20 interface. Some applications can choose to provide their
own specialized = implementations, however, Hibernate provides
a range of built-in=20 implementations. The shortcut names for the
built-in generators are as = follows:=20

increment

generates identifiers of type long, = short or int that = are unique=20
only when no other process is inserting data into the same table.
= Do not use in a cluster.

identity

supports identity
columns in DB2, MySQL, MS SQL Server, Sybase and=20 HypersonicSQL.
The returned identifier is of type long, short or = int.

sequence

uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or
a = generator in=20 Interbase. The returned identifier is of type
long,=20 short or int =

hilo

uses a hi/lo = algorithm
to=20 efficiently generate identifiers of type long,=20 short
or int, given a=20 table and column (by default hibernate_unique_key=20
and next_hi respectively) as a source of = hi values.=20 The
hi/lo algorithm generates identifiers that are unique only for a=20
particular database.

seqhilo

uses a hi/lo algorithm to
efficiently generate identifiers of type = long, short or = int,
given a named database sequence.

uuid

uses a 128-bit UUID
algorithm to generate identifiers of type = string that=20 are
unique within a network (the IP address is used). The UUID is = encoded
as a=20 string of 32 hexadecimal digits in length.

guid

uses a database-generated GUID string on MS SQL Server and MySQL.
=

native

selects identity, sequence or hilo = depending=20
upon the capabilities of the underlying database.

assigned

lets the application assign an identifier to the object before
= save() is called. This is the default strategy = if no=20 <generator>
element is specified. =

select

retrieves a primary key,
assigned by a database trigger, by = selecting the=20 row by some
unique key and retrieving the primary key value.

foreign

uses the identifier of another associated object. It is usually = used
in=20 conjunction with a <one-to-one> = primary key=20
association.

sequence-identity

a specialized sequence
generation strategy that utilizes a database = sequence for the
actual value generation, but combines this with JDBC3 = getGeneratedKeys
to return the generated identifier value as part of = the=20 insert
statement execution. This strategy is only supported on Oracle = 10g=20
drivers targeted for JDK 1.4. Comments on these insert statements
are = disabled=20 due to a bug in the Oracle drivers.

Starting with release 3.2.3, there are 2 new generators
which = represent a=20 re-thinking of 2 different aspects of identifier
generation. The first = aspect is=20 database portability; the second
is optimization Optimization means that = you do=20 not have to
query the database for every request for a new identifier = value.=20 These
two new generators are intended to take the place of some of the = named=20 generators
described above, starting in 3.3.x. However, they are = included
in the=20 current releases and can be referenced by FQN.

The first
of these new generators is org.hibernate.id.enhanced.SequenceStyleGenerator
= which is=20 intended, firstly, as a replacement for the sequence=20 generator
and, secondly, as a better portability generator than native. This
is because native=20 generally chooses between identity and = sequence
which have largely different semantics = that can=20 cause subtle
issues in applications eyeing portability. org.hibernate.id.enhanced.SequenceStyleGenerator,
= however,=20 achieves portability in a different manner. It chooses
between a table = or a=20 sequence in the database to store its
incrementing values, depending on = the=20 capabilities of the dialect
being used. The difference between this and = native is that table-based
and sequence-based = storage have=20 the same exact semantic. In
fact, sequences are exactly what Hibernate = tries to=20 emulate
with its table-based generators. This generator has a number of=20 configuration
parameters:

The second of these new generators is org.hibernate.id.enhanced.TableGenerator,
which = is=20 intended, firstly, as a replacement for the table=20 generator,
even though it actually functions much more like org.hibernate.id.MultipleHiLoPerTableGenerator,
= and=20 secondly, as a re-implementation of org.hibernate.id.MultipleHiLoPerTableGenerator
= that=20 utilizes the notion of pluggable optimizers. Essentially
this generator = defines=20 a table capable of holding a number
of different increment values = simultaneously=20 by using multiple
distinctly keyed rows. This generator has a number of=20 configuration
parameters:

  • table_name (optional - defaults to = hibernate_sequences):
    the name of the table to = be used.=20

  • value_column_name
    (optional - defaults = to next_val): the name of the column on the
    table = that is=20 used to hold the value.

  • segment_column_name
    (optional - = defaults to=20 sequence_name): the name of the column
    on = the table=20 that is used to hold the "segment key". This
    is the value which = identifies=20 which increment value to use.

  • segment_value (optional - defaults to = default): The "segment
    key" value for the = segment from=20 which we want to pull increment
    values for this generator.

  • segment_value_length (optional
    - = defaults to=20 255): Used for schema generation; the = column
    size=20 to create this segment key column.

  • initial_value
    (optional - defaults to = 1): The initial value to be retrieved from
    the = table.=20

  • increment_size (optional - defaults to
    = 1): The value by which subsequent calls to the = table=20 should
    differ.

  • optimizer (optional - defaults to = ): See Section 5.1.6,=20
    =E2=80=9CIdentifier generator optimization=E2=80=9D
    =

5.1.6. Identifier
= generator=20 optimization

For identifier generators that store
values in the database, it is=20 inefficient for them to hit the
database on each and every call to = generate a=20 new identifier
value. Instead, you can group a bunch of them in memory = and only=20 hit
the database when you have exhausted your in-memory value group. = This
is the=20 role of the pluggable optimizers. Currently only the two
enhanced = generators (Section 5.1.5,=20 =E2=80=9CEnhanced
identifier generators=E2=80=9D support this = operation.


  • none (generally this is the default if = no=20 optimizer was
    specified): this will not perform any optimizations and = hit the=20
    database for each and every request.

  • hilo: applies a hi/lo
    algorithm around = the=20 database retrieved values. The values
    from the database for this = optimizer are=20 expected to be sequential.
    The values retrieved from the database = structure=20 for this
    optimizer indicates the "group number". The increment_size is multiplied
    by that value in = memory to=20 define a group "hi value".


  • pooled: as with the case of hilo, this optimizer attempts to
    minimize the = number of=20 hits to the database. Here, however,
    we simply store the starting = value for=20 the "next group" into
    the database structure rather than a sequential = value in=20
    combination with an in-memory grouping algorithm. Here, increment_size
    refers to the values coming from = the=20 database.

5.1.7. composite-id

<= /DIV>
<composite-id

name=3D"propertyName" class=3D"ClassName"
mapped=3D"true|false" access=3D"field|property|ClassName">
node=3D"element-name|." <key-property name=3D"propertyName"
type=3D"typename" = column=3D"column_name"/> <key-many-to-one
name=3D"propertyName class=3D"ClassName" = column=3D"column_name"/>
...... </composite-id>

A table with a composite key
can be mapped with multiple properties = of the=20 class as identifier
properties. The <composite-id> element accepts <key-property>
property mappings and <key-many-to-one> mappings as child = elements.

<composite-id>
        <key-property name=3D"medicareNumber"/>

<key-property name=3D"dependent"/> </composite-id>

The
persistent class must = override equals() and hashCode() to=20 implement
composite identifier equality. It must also implement Serializable.

Unfortunately, this approach means that a persistent object is its
= own=20 identifier. There is no convenient "handle" other than
the object = itself. You=20 must instantiate an instance of the
persistent class itself and populate = its=20 identifier properties
before you can load() = the=20 persistent state associated with
a composite key. We call this approach = an embedded composite identifier,
and = discourage it=20 for serious applications.

A second approach
is what we call a mapped composite identifier, where the = identifier=20 properties
named inside the <composite-id>=20 element are duplicated on
both the persistent class and a separate = identifier=20 class.

<composite-id =
class=3D"MedicareId" mapped=3D"true">
   
<key-property name=3D"medicareNumber"/> <key-property
name=3D"dependent"/> </composite-id>

In this example, both
the composite identifier class, MedicareId, and the entity class itself
have = properties=20 named medicareNumber and dependent. The identifier
class must override = equals() and hashCode() and=20 implement Serializable.
The main = disadvantage of this=20 approach is code duplication.

The following attributes are used to specify a mapped composite
= identifier:=20

  • mapped (optional - defaults to false):
    indicates that a mapped composite = identifier is=20 used, and
    that the contained property mappings refer to both the = entity class=20
    and the composite identifier class.

  • class (optional - but
    required for a = mapped=20 composite identifier): the class used
    as a composite identifier.=20

We will describe a third, even more
convenient approach, where the = composite=20 identifier is implemented
as a component class in Section 8.4,=20 =E2=80=9CComponents
as composite identifiers=E2=80=9D. The = attributes described below
apply=20 only to this alternative approach:

  • name (optional
    - required for this = approach): a=20 property of component type
    that holds the composite identifier. Please = see=20 chapter 9
    for more information.

  • access (optional - defaults to property):
    the strategy Hibernate uses for = accessing the=20 property value.

  • class (optional - defaults to the = property type=20 determined
    by reflection): the component class used as a composite = identifier.=20
    Please see the next section for more information.

The third approach,
an identifier=20 component, is recommended for almost all applications.
=

5.1.8. Discriminator

The <discriminator>
element is = required for=20 polymorphic persistence using the table-per-class-hierarchy
mapping = strategy. It=20 declares a discriminator column of the
table. The discriminator column = contains=20 marker values that
tell the persistence layer what subclass to = instantiate for a=20 particular
row. A restricted set of types can be used: string, character, = integer,
byte, short, boolean, = yes_no, true_false. =

<discriminator

column=3D"discriminator_column" 3D(1)
type=3D"discriminator_type" 3D(2)
force=3D"true|false" 3D(3) insert=3D"true|false"
3D(4) formula=3D"arbitrary sql
expression" 3D(5) />

3D1=20

column (optional - defaults to = class): the name of the discriminator
= column.=20

3D2=20

type (optional - defaults
to string): a name that indicates the = Hibernate type=20

3D3=20

force (optional - defaults to = false): "forces"
Hibernate to specify the = allowed=20 discriminator values,
even when retrieving all instances of the = root=20 class.

3D4=20

insert (optional - defaults to = true): set
this to false=20 if your discriminator column is also part
of a mapped composite=20 identifier. It tells Hibernate not
to include the column in SQL = INSERTs.

3D5=20

formula
(optional): an arbitrary = SQL=20 expression that is executed
when a type has to be evaluated. It = allows=20 content-based
discrimination. =

Actual values of the discriminator column are
specified by the discriminator-value attribute of the <class>
and <subclass> elements.

The force attribute is only useful
if = the table=20 contains rows with "extra" discriminator values
that are not mapped to a = persistent class. This will not usually
be the case.

The formula attribute allows you to = declare an=20 arbitrary
SQL expression that will be used to evaluate the type of a = row.
For=20 example:

<discriminator
    formula=3D"case when CLASS_TYPE
in ('a', 'b', 'c') then 0 else 1 = end" type=3D"integer"/>

The
<version> element is optional = and=20 indicates that the
table contains versioned data. This is particularly = useful if=20 you
plan to use long = transactions. See=20 below for more information:

<version
        column=3D"version_column"                 
= 3D(1) name=3D"propertyName"
= 3D(2) type=3D"typename"
= 3D(3) access=3D"field|property|ClassName"
= 3D(4) unsaved-value=3D"null|negative|undefined"
= 3D(5) generated=3D"never|always"
= 3D(6) insert=3D"true|false"
= 3D(7) node=3D"element-name|@attribute-name|element/@attribute|." />


3D1=20

column (optional - defaults to the = property=20
name): the name of the column holding the version number. =

3D2=20

name: the name of a property of = the=20
persistent class.

3D3=20

type (optional - defaults
to integer): the type of the version number. =

3D4=20

access (optional - defaults to = property): the strategy Hibernate
uses to = access the=20 property value.

3D5=20

unsaved-value (optional - defaults = to undefined): a version
property value that = indicates=20 that an instance is newly
instantiated (unsaved), distinguishing = it from=20 detached
instances that were saved or loaded in a previous = session. Undefined
specifies that the identifier = property=20 value should be
used.

3D6=20

generated (optional - defaults to = never):
specifies that this version = property value is=20 generated
by the database. See the discussion of generated=20 properties
for more information.

3D7=20

insert (optional - defaults
to = true): specifies whether the version column = should be=20
included in SQL insert statements. It can be set to false if
the database column is defined = with a=20 default value of
0.=20

Version numbers can be of Hibernate type long,=20 integer,
short, timestamp or calendar.

A version or timestamp property should
never be null for a detached = instance.=20 Hibernate will detect
any instance with a null version or timestamp as=20 transient, irrespective
of what other unsaved-value=20 strategies are specified. Declaring
a = nullable version=20 or timestamp property is an easy way to
avoid problems with transitive=20 reattachment in Hibernate. It is
especially useful for people using = assigned=20 identifiers or
composite keys
.

The
optional <timestamp> element = indicates=20 that the table
contains timestamped data. This provides an alternative = to=20 versioning.
Timestamps are a less safe implementation of optimistic = locking.=20 However,
sometimes the application might use the timestamps in other = ways.

<timestamp
        column=3D"timestamp_column"             
= 3D(1) name=3D"propertyName"
= 3D(2) access=3D"field|property|ClassName"
= 3D(3) unsaved-value=3D"null|undefined"
= 3D(4) source=3D"vm|db"
= 3D(5) generated=3D"never|always"
= 3D(6) node=3D"element-name|@attribute-name|element/@attribute|." />




3D1=20

column (optional - defaults to the = property=20
name): the name of a column holding the timestamp.

3D2=20

name: the name of a JavaBeans = style property=20
of Java type Date or Timestamp of the persistent class. =

3D3=20

access (optional - defaults to = property):
the strategy Hibernate uses for = accessing=20 the property
value.

3D4=20

unsaved-value (optional - defaults
= to null): a version property value that = indicates that=20
an instance is newly instantiated (unsaved), distinguishing it
= from=20 detached instances that were saved or loaded in
a previous = session. Undefined specifies that the identifier = property=20
value should be used.

3D5=20

source (optional
- defaults to = vm): Where should Hibernate retrieve the = timestamp=20
value from? From the database, or from the current JVM? = Database-based=20
timestamps incur an overhead because Hibernate must hit the = database
in=20 order to determine the "next value". It is safer to use
in = clustered=20 environments. Not all Dialects are = known
to=20 support the retrieval of the database's current timestamp.
Others = may also=20 be unsafe for usage in locking due to
lack of precision (Oracle 8, = for=20 example).

3D6=20

generated (optional - defaults to = never): specifies
that this timestamp = property value=20 is actually generated
by the database. See the discussion of generated=20 properties
for more information. =

Note

<Timestamp> is equivalent
to <version type=3D"timestamp">. And <timestamp source=3D"db">
is equivalent to = <version type=3D"dbtimestamp"> =

5.1.11. Property

<= /DIV>

The
<property> element declares a = persistent=20 JavaBean style
property of the class.

<property
        name=3D"propertyName"
= 3D(1) column=3D"column_name"
= 3D(2) type=3D"typename"
= 3D(3) update=3D"true|false"
= 3D(4) insert=3D"true|false"
= 3D(4) formula=3D"arbitrary
SQL expression" = 3D(5) access=3D"field|property|ClassName"
= 3D(6) lazy=3D"true|false"
= 3D(7) unique=3D"true|false"
= 3D(8) not-null=3D"true|false"
= 3D(9) optimistic-lock=3D"true|false"
= 3D(10) generated=3D"never|insert|always"
= 3D(11) node=3D"element-name|@attribute-name|element/@attribute|."
index=3D"index_name" unique_key=3D"unique_key_id"
length=3D"L" precision=3D"P" scale=3D"S" />




3D1=20

name: the name of the property, = with an=20
initial lowercase letter.

3D2=20

column (optional
- defaults to the = property=20 name): the name of the mapped
database table column. This can also = be=20 specified by
nested <column> = element(s).=20

3D3=20

type (optional): a name that = indicates the=20 Hibernate
type.

3D4=20

update, insert (optional - = defaults
to true): specifies that the mapped columns = should be=20
included in SQL UPDATE and/or INSERT statements. Setting both to
false allows a pure "derived" property = whose value is=20
initialized from some other property that maps to the same = column(s),
or=20 by a trigger or other application.

3D5=20

formula (optional): an SQL = expression that=20 defines
the value for a computed=20 property. Computed properties do
not have a column mapping of = their own.=20

3D6=20

access (optional - defaults to = property): the strategy
Hibernate uses for = accessing=20 the property value.

3D7=20

lazy (optional - defaults to false): specifies
that this property should = be=20 fetched lazily when the
instance variable is first accessed. It = requires=20 build-time
bytecode instrumentation.

3D8=20

unique (optional):
enables the DDL = generation of a unique constraint for the
columns. Also, allow = this to be=20 the target of a property-ref.
=

3D9=20

not-null (optional): enables the = DDL=20
generation of a nullability constraint for the columns. =

3D10=20

optimistic-lock (optional - = defaults to=20
true): specifies that updates to this = property=20 do
or do not require acquisition of the optimistic lock. In other = words,=20
it determines if a version increment should occur when this = property
is=20 dirty.

3D11=20

generated (optional -
defaults to = never): specifies that this property value = is=20
actually generated by the database. See the discussion of generated=20
properties for more information. =

typename could be:


  1. The name of a Hibernate basic type: integer, = string,=20
    character, date, timestamp, float, binary, serializable, object,
    = blob
    =20 etc.

  2. The name of a Java class with a default
    basic type: int, float, char, java.lang.String, java.util.Date,=20
    java.lang.Integer, java.sql.Clob etc.

  3. The name of a serializable
    Java class.

  4. The class name of a custom type: com.illflow.type.MyCustomType
    etc. =

If you do not specify a type, Hibernate will use reflection
upon the = named=20 property and guess the correct Hibernate type.
Hibernate will attempt to = interpret the name of the return class
of the property getter using, in = order,=20 rules 2, 3, and 4.
In certain cases you will need the type attribute. For example, to
distinguish = between Hibernate.DATE and Hibernate.TIMESTAMP, or
to specify a custom type. =

The access attribute allows you to
= control how=20 Hibernate accesses the property at runtime. By
default, Hibernate will = call the=20 property get/set pair. If
you specify access=3D"field",=20 Hibernate will bypass the get/set
pair and access the field directly = using=20 reflection. You can
specify your own strategy for property access by = naming a=20 class
that implements the interface org.hibernate.property.PropertyAccessor.

A powerful feature is derived properties. These properties are by
= definition=20 read-only. The property value is computed at load
time. You declare the=20 computation as an SQL expression. This then
translates to a SELECT clause subquery in the SQL query that = loads
an=20 instance:

<property =
name=3D"totalPrice"
    formula=3D"(
SELECT SUM (li.quantity*p.price) FROM LineItem li, = Product p
WHERE li.productId =3D p.productId
AND li.customerId =3D customerId AND li.orderNumber
=3D orderNumber )"/>

You can reference the entity table by not
declaring an alias on a = particular=20 column. This would be customerId
in the = given=20 example. You can also use the nested <formula>=20 mapping
element if you do not want to use the attribute.

5.1.12. Many-to-one

An
ordinary association to another persistent class is declared using
= a many-to-one element. The relational model is a = many-to-one=20 association;
a foreign key in one table is referencing the primary key = column(s)=20 of
the target table.

<many-to-one
        name=3D"propertyName"
= 3D(1) column=3D"column_name"
= 3D(2) class=3D"ClassName"
= 3D(3) cascade=3D"cascade_style"
= 3D(4) fetch=3D"join|select"
= 3D(5) update=3D"true|false"
= 3D(6) insert=3D"true|false"
= 3D(6) property-ref=3D"propertyNameFromAssociatedClass"
= 3D(7) access=3D"field|property|ClassName"
= 3D(8) unique=3D"true|false"
= 3D(9) not-null=3D"true|false"
= 3D(10) optimistic-lock=3D"true|false"
= 3D(11) lazy=3D"proxy|no-proxy|false"
= 3D(12) not-found=3D"ignore|exception"
= 3D(13) entity-name=3D"EntityName"
= 3D(14) formula=3D"arbitrary
SQL expression" = 3D(15) node=3D"element-name|@attribute-name|element/@attribute|."
embed-xml=3D"true|false" index=3D"index_name"
unique_key=3D"unique_key_id" foreign-key=3D"foreign_key_name" />








3D1=20

name: the name of the property. =

3D2=20

column (optional): the name of the = foreign=20
key column. This can also be specified by nested <column>
element(s).

3D3=20

class (optional - defaults to
the = property=20 type determined by reflection): the name
of the associated class.=20

3D4=20

cascade (optional):
specifies = which=20 operations should be cascaded from the
parent object to the = associated=20 object.

3D5=20

fetch (optional - defaults to = select): chooses between
outer-join = fetching or=20 sequential select fetching.

3D6=20

update, insert (optional - = defaults to true):
specifies that the mapped columns = should be=20 included
in SQL UPDATE and/or INSERT statements. Setting both to false allows
a pure "derived" association = whose value=20 is initialized
from another property that maps to the same = column(s), or=20
by a trigger or other application.

3D7=20

property-ref
(optional): the name = of a=20 property of the associated
class that is joined to this foreign = key. If=20 not specified,
the primary key of the associated class is used. =

3D8=20

access (optional - defaults to = property): the strategy
Hibernate uses for = accessing=20 the property value.

3D9=20

unique (optional): enables the DDL =
generation of a unique constraint for the foreign-key column. By = allowing=20
this to be the target of a property-ref, you=20 can make
the association multiplicity one-to-one.

3D10=20

not-null
(optional): enables the = DDL=20 generation of a nullability
constraint for the foreign key = columns.=20

3D11=20

optimistic-lock (optional - = defaults to=20 true): specifies
that updates to this = property=20 do or do not require acquisition
of the optimistic lock. In other = words,=20 it determines
if a version increment should occur when this = property is=20
dirty.

3D12=20

lazy (optional - defaults to proxy):
by default, single point = associations are=20 proxied. lazy=3D"no-proxy"
specifies = that the=20 property should be fetched lazily
when the instance variable is = first=20 accessed. This requires
build-time bytecode instrumentation. lazy=3D"false" specifies that
the = association will=20 always be eagerly fetched.

3D13=20

not-found (optional - defaults to = exception):
specifies how foreign keys that = reference=20 missing rows
will be handled. ignore = will treat=20 a missing row as a
null association.

3D14=20

entity-name (optional):
the entity = name of=20 the associated class.

3D15=20

formula (optional): an SQL = expression that=20
defines the value for a computed=20 foreign key.

Setting
a value of the cascade attribute = to any=20 meaningful value other
than none will = propagate=20 certain operations to the associated
object. The meaningful values are = divided=20 into three categories.
First, basic operations, which include: persist, merge, delete, save-update,
evict, replicate, = lock and=20 refresh; second, special values:
delete-orphan; and third,all=20 comma-separated combinations of operation
names: cascade=3D"persist,merge,evict" or cascade=3D"all,delete-orphan".
See Section 10.11,=20 =E2=80=9CTransitive persistence=E2=80=9D

for a full explanation. = Note that single valued,=20 many-to-one
and one-to-one, associations do not support orphan delete. =

Here
is an example of a typical many-to-one=20 declaration:

<many-to-one
= name=3D"product" class=3D"Product" column=3D"PRODUCT_ID"/>

The
property-ref attribute should only = be used for=20 mapping legacy
data where a foreign key refers to a unique key of the = associated=20 table
other than the primary key. This is a complicated and confusing = relational=20 model.
For example, if the Product class = had a unique=20 serial number
that is not the primary key. The unique=20 attribute controls Hibernate's
DDL generation with the SchemaExport = tool.

<property name=3D"serialNumber"
= unique=3D"true" type=3D"string" column=3D"SERIAL_NUMBER"/>

Then
the mapping for OrderItem might = use:

<many-to-one name=3D"product"
= property-ref=3D"serialNumber" = column=3D"PRODUCT_SERIAL_NUMBER"/>

This
is not encouraged, however.

If the referenced unique key comprises
multiple properties of the = associated=20 entity, you should map
the referenced properties inside a named <properties> element.

If the referenced unique key is the property of a component, you
can = specify=20 a property path:

<many-to-one =
name=3D"owner"
property-ref=3D"identity.ssn" = column=3D"OWNER_SSN"/>

5.1.13. One-to-one

A
one-to-one association to another persistent class is declared = using
a=20 one-to-one element.

<one-to-one
        name=3D"propertyName"
= 3D(1) class=3D"ClassName"
= 3D(2) cascade=3D"cascade_style"
= 3D(3) constrained=3D"true|false"
= 3D(4) fetch=3D"join|select"
= 3D(5) property-ref=3D"propertyNameFromAssociatedClass"
= 3D(6) access=3D"field|property|ClassName"
= 3D(7) formula=3D"any SQL expression"
= 3D(8) lazy=3D"proxy|no-proxy|false"
= 3D(9) entity-name=3D"EntityName"
= 3D(10) node=3D"element-name|@attribute-name|element/@attribute|."
embed-xml=3D"true|false" foreign-key=3D"foreign_key_name" />



3D1=20

name: the name of the property. =

3D2=20

class (optional - defaults to the = property=20
type determined by reflection): the name of the associated class.=20

3D3=20

cascade (optional): specifies = which=20
operations should be cascaded from the parent object to the = associated=20
object.

3D4=20

constrained (optional): specifies
= that a=20 foreign key constraint on the primary key of the
mapped table and=20 references the table of the associated
class. This option affects = the=20 order in which save()
and delete() are cascaded, and determines = whether the=20
association can be proxied. It is also used by the schema export
= tool.=20

3D5=20

fetch (optional - defaults
to = select): chooses between outer-join = fetching or=20
sequential select fetching.

3D6=20

property-ref
(optional): the name = of a=20 property of the associated
class that is joined to the primary key = of this=20 class.
If not specified, the primary key of the associated class = is used.=20

3D7=20

access (optional - defaults to = property):
the strategy Hibernate uses for = accessing=20 the property
value.

3D8=20

formula (optional): almost all = one-to-one=20
associations map to the primary key of the owning entity. If
this = is not=20 the case, you can specify another column,
columns or expression to = join on=20 using an SQL formula.
See org.hibernate.test.onetooneformula for an = example.=20

3D9=20

lazy (optional - defaults to proxy): by
default, single point = associations are=20 proxied. lazy=3D"no-proxy"
specifies = that the=20 property should be fetched lazily
when the instance variable is = first=20 accessed. It requires
build-time bytecode instrumentation. lazy=3D"false" specifies that
the = association will=20 always be eagerly fetched. Note
that if = constrained=3D"false", proxying is = impossible and=20
Hibernate will eagerly fetch the association
. =

3D10=20

entity-name (optional): the entity = name of=20
the associated class.

There are two varieties of one-to-one associations:

  • primary key associations

  • unique foreign key associations

Primary key associations do not need an extra table column. If two
= rows are=20 related by the association, then the two table rows
share the same = primary key=20 value. To relate two objects by
a primary key association, ensure that = they are=20 assigned the
same identifier value.

For a primary key association, add the following
mappings to Employee and Person=20 respectively:

<one-to-one =
name=3D"person"
class=3D"Person"/>
<one-to-one name=3D"employee" =
class=3D"Employee"
constrained=3D"true"/>

Ensure that the primary keys of the related
rows in the PERSON and = EMPLOYEE=20 tables are equal. You use a
special Hibernate identifier generation = strategy=20 called foreign:

<class name=3D"person" table=3D"PERSON">
    <id name=3D"id"
column=3D"PERSON_ID"> <generator class=3D"foreign">
<param name=3D"property">employee</param>
</generator> </id> ... <one-to-one
name=3D"employee" class=3D"Employee" constrained=3D"true"/> </class>

A
newly saved instance of Person is = assigned the=20 same primary
key value as the Employee = instance=20 referred with the employee
property of that = Person.

Alternatively, a foreign key with a
unique constraint, from Employee to Person, = can be=20 expressed
as:

<many-to-one =
name=3D"person" class=3D"Person" column=3D"PERSON_ID"
= unique=3D"true"/>

This association can be made bidirectional
by adding the following to = the=20 Person mapping:

<one-to-one
name=3D"employee" = class=3D"Employee" property-ref=3D"person"/>

5.1.14. Natural-id

<natural-id
= mutable=3D"true|false"/> <property ... />
<many-to-one ... /> ...... </natural-id>

Although
we recommend the use of surrogate keys as primary keys, you = should=20 try
to identify natural keys for all entities. A natural key is a = property
or=20 combination of properties that is unique and non-null. It is
also = immutable. Map=20 the properties of the natural key inside
the <natural-id> element. Hibernate will = generate the=20 necessary
unique key and nullability constraints and, as a result, your = mapping=20 will
be more self-documenting.

It is recommended that you implement equals()
and=20 hashCode() to compare the natural key = properties of=20 the
entity.

This mapping is not intended for use with entities that
have natural = primary=20 keys.

  • mutable (optional -
    defaults to false): by default, natural identifier = properties are=20
    assumed to be immutable (constant).

The <component> element maps = properties
of a=20 child object to columns of the table of a parent class. Components
can, = in turn,=20 declare their own properties, components or collections.
See the = "Component"=20 examples below:

<component
     
name=3D"propertyName" 3D(1) class=3D"className"
3D(2) insert=3D"true|false"
3D(3) update=3D"true|false" 3D(4) access=3D"field|property|ClassName"
3D(5) lazy=3D"true|false" 3D(6) optimistic-lock=3D"true|false"
3D(7) unique=3D"true|false" 3D(8) node=3D"element-name|." >
<property ...../> <many-to-one .... />
........ </component>

3D1=20

name: the name of the property. =

3D2=20

class
(optional - defaults to the = property=20 type determined
by reflection): the name of the component (child) = class.=20

3D3=20

insert: do the mapped columns = appear
in SQL=20 INSERTs?

3D4=20

update: do the mapped
columns = appear in SQL=20 UPDATEs?

3D5=20

access (optional - defaults to = property): the strategy Hibernate
uses for = accessing=20 the property value.

3D6=20

lazy (optional - defaults to false): specifies that this
component = should be=20 fetched lazily when the instance
variable is first accessed. It = requires=20 build-time bytecode
instrumentation.

3D7=20

optimistic-lock (optional
- = defaults to=20 true): specifies that updates to this = component=20
either do or do not require acquisition of the optimistic lock.
It = determines if a version increment should occur when
this property = is=20 dirty.

3D8=20

unique
(optional - defaults to = false): specifies that a unique constraint
= exists=20 upon all mapped columns of the component.=20

The
child <property> tags map = properties of=20 the child class
to table columns.

The <component> element allows a = <parent>
subelement that maps a property of = the=20 component class as a
reference back to the containing entity.

The <dynamic-component>
element = allows a=20 Map to be mapped as a component, where the
= property=20 names refer to keys of the map. See
Section 8.5,=20 =E2=80=9CDynamic
components=E2=80=9D
for more information. =

5.1.16. Properties

The
<properties> element allows = the=20 definition of a named,
logical grouping of the properties of a class. = The most=20 important
use of the construct is that it allows a combination of = properties
to=20 be the target of a property-ref. It is also = a=20 convenient
way to define a multi-column unique constraint. For example: =

<properties

name=3D"logicalName" 3D(1) insert=3D"true|false"
3D(2) update=3D"true|false" 3D(3)
optimistic-lock=3D"true|false" 3D(4) unique=3D"true|false"
3D(5) > <property ...../>
<many-to-one .... /> ........ </properties>



3D1=20

name: the logical name of the = grouping.
It=20 is not an actual property = name.=20

3D2=20

insert: do the mapped columns = appear in SQL=20
INSERTs?

3D3=20

update: do the mapped columns
= appear in SQL=20 UPDATEs?

3D4=20

optimistic-lock
(optional - = defaults to=20 true): specifies that updates
to = these=20 properties either do or do not require acquisition
of the = optimistic lock.=20 It determines if a version increment
should occur when these = properties=20 are dirty.

3D5=20

unique (optional - defaults to = false): specifies
that a unique constraint = exists=20 upon all mapped columns
of the component.=20

For example, if we have the following <properties>
mapping:

<class name=3D"Person">
    <id name=3D"personNumber"/>


... <properties name=3D"name" unique=3D"true"
update=3D"false"> <property name=3D"firstName"/>
<property name=3D"initial"/> <property name=3D"lastName"/>
</properties> </class>

You might have some legacy
data association that refers to this = unique key of=20 the Person
table, instead of to the primary = key:

<many-to-one name=3D"person"

class=3D"Person" property-ref=3D"name"> <column
name=3D"firstName"/> <column name=3D"initial"/>
<column name=3D"lastName"/> </many-to-one>

The use
of this outside the context of mapping legacy data is not=20 recommended.

5.1.17. Subclass

<= /DIV>

Polymorphic persistence requires
the declaration of each subclass of = the root=20 persistent class.
For the table-per-class-hierarchy mapping strategy, = the <subclass>
declaration is used. For = example:

<subclass
        name=3D"ClassName"
3D(1) discriminator-value=3D"discriminator_value"
3D(2) proxy=3D"ProxyInterface" 3D(3)
lazy=3D"true|false" 3D(4) dynamic-update=3D"true|false"
dynamic-insert=3D"true|false" entity-name=3D"EntityName"
node=3D"element-name" extends=3D"SuperclassName">
<property .... /> ..... </subclass>

3D1=20

name: the fully qualified class = name of
the=20 subclass.

3D2=20

discriminator-value
(optional - = defaults to=20 the class name): a value that
distinguishes individual subclasses. =

3D3=20

proxy (optional): specifies a = class or=20 interface used
for lazy initializing proxies.

3D4=20

lazy (optional
- defaults to true): setting lazy=3D"false" disables the use of lazy
= fetching.=20

Each subclass declares its own persistent properties
and subclasses. = <version> and <id>=20 properties are
assumed to be inherited from the root class. Each = subclass in a=20 hierarchy
must define a unique discriminator-value.=20 If this is not specified,
the fully qualified Java class name is used. =

For information
about inheritance mappings see Chapter 9,=20 Inheritance = mapping.=20

5.1.18. Joined-subclass

=

Each
subclass can also be mapped to its own table. This is called the = table-per-subclass
mapping strategy. An inherited state is retrieved by = joining=20 with
the table of the superclass. To do this you use the <joined-subclass>
element. For example: =

<joined-subclass
        name=3D"ClassName"
3D(1) table=3D"tablename"
3D(2) proxy=3D"ProxyInterface" 3D(3) lazy=3D"true|false"
3D(4) dynamic-update=3D"true|false"
dynamic-insert=3D"true|false" schema=3D"schema"
catalog=3D"catalog" extends=3D"SuperclassName"
persister=3D"ClassName" subselect=3D"SQL expression"
entity-name=3D"EntityName" node=3D"element-name">
<key .... > <property .... />
..... </joined-subclass>

3D1=20

name: the fully qualified class = name of the=20 subclass.

3D2=20

table: the name of the subclass = table.=20

3D3=20

proxy (optional): specifies a = class
or=20 interface to use for lazy initializing proxies.

3D4=20

lazy (optional, defaults to true): setting lazy=3D"false"
disables the use of lazy = fetching.=20

A discriminator column
is not required for this mapping strategy. = Each=20 subclass must,
however, declare a table column holding the object = identifier=20 using
the <key> element. The mapping = at the=20 start of the chapter
would then be re-written as:

<?xml version=3D"1.0"?>
<!DOCTYPE
hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping
DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping
package=3D"eg"> <class name=3D"Cat" table=3D"CATS">
<id name=3D"id" column=3D"uid" type=3D"long">
<generator class=3D"hilo"/>
</id> <property name=3D"birthdate"
type=3D"date"/> <property name=3D"color" not-null=3D"true"/>
<property name=3D"sex" not-null=3D"true"/>
<property name=3D"weight"/>
<many-to-one name=3D"mate"/> <set name=3D"kittens">
<key column=3D"MOTHER"/>
<one-to-many class=3D"Cat"/> </set>
<joined-subclass name=3D"DomesticCat" = table=3D"DOMESTIC_CATS">
<key column=3D"CAT"/>
<property name=3D"name" type=3D"string"/>
</joined-subclass> </class> <class
name=3D"eg.Dog"> <!-- mapping for Dog could
go here --> </class> </hibernate-mapping>

For
information about inheritance mappings see Chapter 9,=20 Inheritance
= mapping
.=20

5.1.19. Union-subclass

A third option
is to map only the concrete classes of an inheritance=20 hierarchy
to tables. This is called the table-per-concrete-class = strategy.
Each=20 table defines all persistent states of the class, including
the = inherited state.=20 In Hibernate, it is not necessary to explicitly
map such inheritance=20 hierarchies. You can map each class with
a separate <class> declaration. However, if you wish = use=20 polymorphic
associations (e.g. an association to the superclass of your=20 hierarchy),
you need to use the <union-subclass> mapping. For example:

<union-subclass

name=3D"ClassName" 3D(1) table=3D"tablename"
3D(2) proxy=3D"ProxyInterface"
3D(3) lazy=3D"true|false" 3D(4) dynamic-update=3D"true|false"
dynamic-insert=3D"true|false" schema=3D"schema"
catalog=3D"catalog" extends=3D"SuperclassName"
abstract=3D"true|false" persister=3D"ClassName"
subselect=3D"SQL expression" entity-name=3D"EntityName"
node=3D"element-name"> <property .... />
..... </union-subclass>

3D1=20

name: the fully qualified class = name of the=20 subclass.

3D2=20

table: the name of the subclass = table.=20

3D3=20

proxy (optional): specifies a = class
or=20 interface to use for lazy initializing proxies.

3D4=20

lazy (optional, defaults to true): setting lazy=3D"false"
disables the use of lazy = fetching.=20

No discriminator column
or key column is required for this mapping = strategy.=20

For
information about inheritance mappings see Chapter 9,=20 Inheritance
= mapping
.=20

5.1.20. Join

Using the <join>
element, it is = possible to=20 map properties of one class to several
tables that have a one-to-one=20 relationship. For example:

<join

table=3D"tablename" 3D(1) schema=3D"owner"
3D(2) catalog=3D"catalog"
3D(3) fetch=3D"join|select"
3D(4) inverse=3D"true|false" 3D(5) optional=3D"true|false">
3D(6) <key ... /> <property
... /> ... </join>

3D1=20

table: the name of the joined = table.=20

3D2=20

schema (optional): overrides the = schema name=20 specified
by the root <hibernate-mapping>=20 element.

3D3=20

catalog (optional): overrides the = catalog=20
name specified by the root <hibernate-mapping> element.
=

3D4=20

fetch (optional - defaults to = join):
if set to join, the=20 default, Hibernate will use an inner
join to retrieve a <join> defined by a class or its = superclasses.=20
It will use an outer join for a <join>=20 defined
by a subclass. If set to select then=20 Hibernate will use
a sequential select for a <join> defined on a subclass. This
= will be=20 issued only if a row represents an instance of
the subclass. Inner = joins=20 will still be used to retrieve
a <join>=20 defined by the class and its superclasses.

3D5=20

inverse (optional - defaults to = false):
if enabled, Hibernate will not = insert or=20 update the properties
defined by this join.

3D6=20

optional (optional -
defaults to = false): if enabled, Hibernate will insert a = row
only=20 if the properties defined by this join are non-null.
It will = always use an=20 outer join to retrieve the properties.=20

For
example, address information for a person can be mapped to a = separate=20 table
while preserving value type semantics for all properties:

<class
name=3D"Person" table=3D"PERSON"> <id name=3D"id"
column=3D"PERSON_ID">...</id> <join table=3D"ADDRESS">
<key column=3D"ADDRESS_ID"/> <property name=3D"address"/>
<property name=3D"zip"/> <property name=3D"country"/>
</join> ...

This feature is often only useful for legacy
data models. We = recommend fewer=20 tables than classes and a fine-grained
domain model. However, it is = useful for=20 switching between inheritance
mapping strategies in a single hierarchy, = as=20 explained later.

5.1.21. Key

The <key> element has featured a
= few times=20 within this guide. It appears anywhere the parent
mapping element = defines a join=20 to a new table that references
the primary key of the original table. It = also=20 defines the
foreign key in the joined table:

<key
        column=3D"columnname"
3D(1) on-delete=3D"noaction|cascade"
3D(2) property-ref=3D"propertyName" 3D(3)
not-null=3D"true|false" 3D(4) update=3D"true|false"
3D(5) unique=3D"true|false"
3D(6) />
3D1=20

column (optional):
the name of the = foreign=20 key column. This can also be
specified by nested <column> element(s).

3D2=20

on-delete (optional - defaults to = noaction): specifies whether
the foreign = key=20 constraint has database-level cascade
delete enabled. =

3D3=20

property-ref (optional):
specifies = that the=20 foreign key refers to columns that
are not the primary key of the = original=20 table. It is
provided for legacy data.

3D4=20

not-null (optional):
specifies = that the=20 foreign key columns are not nullable.
This is implied whenever the = foreign=20 key is also part
of the primary key.

3D5=20

update (optional): specifies
that = the=20 foreign key should never be updated. This is
implied whenever the = foreign=20 key is also part of the
primary key.

3D6=20

unique (optional): specifies
that = the=20 foreign key should have a unique constraint.
This is implied = whenever the=20 foreign key is also the
primary key. =

For systems where delete performance is important,
we recommend that = all keys=20 should be defined on-delete=3D"cascade".
= Hibernate uses=20 a database-level ON CASCADE DELETE = constraint,=20 instead
of many individual DELETE = statements. Be=20 aware that this feature
bypasses Hibernate's usual optimistic locking = strategy=20 for
versioned data.

The not-null and update=20 attributes are useful
when mapping a unidirectional one-to-many = association. If=20 you
map a unidirectional one-to-many association to a non-nullable = foreign
key,=20 you must declare the key column = using <key not-null=3D"true">.

5.1.23. Import

If
your application has two persistent classes with the same name, = and
you do=20 not want to specify the fully qualified package name in
Hibernate = queries,=20 classes can be "imported" explicitly, rather
than relying upon auto-import=3D"true". You can also import classes
= and=20 interfaces that are not explicitly mapped:

<import class=3D"java.lang.Object"
= rename=3D"Universe"/>
<import
        class=3D"ClassName"
3D(1) rename=3D"ShortName" 3D(2) />

3D1=20

class: the fully qualified class = name
of any=20 Java class.

3D2=20

rename (optional
- defaults to the = unqualified class name): a name that
can be used in the query = language.=20

5.1.24. Any

There
is one more type of property mapping. The <any> mapping element
defines a polymorphic = association to classes from multiple tables.
This type of mapping = requires more=20 than one column. The first
column contains the type of the associated = entity.=20 The remaining
columns contain the identifier. It is impossible to = specify a=20 foreign
key constraint for this kind of association. This is not the = usual
way=20 of mapping polymorphic associations and you should use this
only in = special=20 cases. For example, for audit logs, user session
data, etc.

The meta-type attribute allows the = application to=20 specify
a custom type that maps database column values to persistent = classes=20 that
have identifier properties of the type specified by id-type. You must
specify the mapping from values = of the=20 meta-type to class names.

<any =
name=3D"being" id-type=3D"long" meta-type=3D"string">

<meta-value value=3D"TBL_ANIMAL" class=3D"Animal"/>
<meta-value value=3D"TBL_HUMAN" class=3D"Human"/> <meta-value
value=3D"TBL_ALIEN" class=3D"Alien"/> <column name=3D"table_name"/>
<column name=3D"id"/> </any>
<any
        name=3D"propertyName"
3D(1) id-type=3D"idtypename"
3D(2) meta-type=3D"metatypename" 3D(3)
cascade=3D"cascade_style" 3D(4) access=3D"field|property|ClassName"
3D(5) optimistic-lock=3D"true|false" 3D(6) >
<meta-value ... /> <meta-value ... />
..... <column .... /> <column ....
/> ..... </any>
3D1=20

name: the property name. =

3D2=20

id-type: the identifier
type. =

3D3=20

meta-type (optional - defaults to
= string): any type that is allowed for a = discriminator=20
mapping.

3D4=20

cascade (optional- defaults to
= none): the cascade style.

3D5=20

access (optional
- defaults to = property): the strategy Hibernate uses for = accessing=20
the property value.

3D6=20

optimistic-lock (optional
- = defaults to=20 true): specifies that updates to this = property=20
either do or do not require acquisition of the optimistic lock.
It = defines=20 whether a version increment should occur if
this property is = dirty.=20

In relation to the persistence service, Java language-level
objects = are=20 classified into two groups:

An entity exists
independently = of any=20 other objects holding references to the
entity. Contrast this with the = usual=20 Java model, where an unreferenced
object is garbage collected. Entities = must be=20 explicitly saved
and deleted. Saves and deletions, however, can be cascaded from a
parent entity to its = children.=20 This is different from the ODMG
model of object persistence by = reachability and=20 corresponds
more closely to how application objects are usually used in = large=20 systems.
Entities support circular and shared references. They can also = be=20 versioned.

An entity's persistent state consists of references to other entities
= and=20 instances of value types. Values = are=20 primitives:
collections (not what is inside a collection), components = and=20 certain
immutable objects. Unlike entities, values in particular = collections
and=20 components, are persisted and = deleted by=20 reachability.
Since value objects and primitives are persisted and = deleted along=20 with
their containing entity, they cannot be independently versioned. = Values=20 have
no independent identity, so they cannot be shared by two entities
= or=20 collections.

Until now, we have been using the term "persistent
class" to refer to = entities. We will continue to do that. Not
all user-defined classes with = a=20 persistent state, however,
are entities. A component is a user-defined class with = value=20 semantics.
A Java property of type java.lang.String=20 also has value semantics.
Given this definition, all types (classes) = provided by=20 the
JDK have value type semantics in Java, while user-defined types can
= be=20 mapped with entity or value type semantics. This decision
is up to the=20 application developer. An entity class in a domain
model will normally = have=20 shared references to a single instance
of that class, while composition = or=20 aggregation usually translates
to a value type.

We will revisit both concepts throughout this reference
guide.

The challenge is to map the Java type system, and the developers'
= definition=20 of entities and value types, to the SQL/database
type system. The bridge = between=20 both systems is provided by
Hibernate. For entities, <class>, <subclass>=20 and so
on are used. For value types we use <property>, <component>etc.,
that usually have a type attribute. The value of this attribute is
= the name of=20 a Hibernate mapping type. = Hibernate=20 provides
a range of mappings for standard JDK value types out of the = box.
You=20 can write your own mapping types and implement your own custom
= conversion=20 strategies.

With the exception of collections,
all built-in Hibernate types = support null=20 semantics.

The built-in basic mapping = types can be=20 roughly
categorized into the following:

integer, long, short, = float,
double,=20 character, byte, boolean, yes_no, true_false

Type mappings from Java primitives or wrapper classes to = appropriate=20
(vendor-specific) SQL column types. boolean, = yes_no=20 and
true_false are all alternative = encodings for a=20 Java boolean
or java.lang.Boolean.

string

A type mapping from java.lang.String
= to VARCHAR (or Oracle VARCHAR2).=20

date, time,=20 timestamp

Type mappings from java.util.Date and = its=20 subclasses
to SQL types DATE, TIME and TIMESTAMP = (or=20 equivalent).


calendar,=20 calendar_date

Type mappings from java.util.Calendar
= to SQL=20 types TIMESTAMP and DATE=20 (or equivalent).


big_decimal,=20 big_integer

Type mappings from java.math.BigDecimal
and=20 java.math.BigInteger to NUMERIC (or Oracle NUMBER).=20

locale, timezone,=20 currency

Type mappings from java.util.Locale,
= java.util.TimeZone and java.util.Currency to VARCHAR=20 (or
Oracle VARCHAR2). Instances of Locale and Currency are mapped=20
to their ISO codes. Instances of TimeZone = are=20 mapped to
their ID.

class

A type mapping from java.lang.Class to
= VARCHAR (or Oracle VARCHAR2).=20 A Class is mapped to its fully
qualified = name.=20

binary

Maps byte arrays to an
appropriate SQL binary type.

text

Maps long Java strings
to a SQL CLOB = or TEXT type.

serializable

Maps serializable
Java types to an appropriate SQL binary type. You = can=20 also
indicate the Hibernate type serializable with=20 the name of a
serializable Java class or interface that does not = default to a=20
basic type.

clob, = blob

Type mappings for the JDBC classes
java.sql.Clob=20 and java.sql.Blob. These types can be = inconvenient=20
for some applications, since the blob or clob object cannot be reused
= outside=20 of a transaction. Driver support is patchy and inconsistent.

imm_date, imm_time, = imm_timestamp,=20 imm_calendar, imm_calendar_date,
imm_serializable, imm_binary
=20

Type mappings for what
are considered mutable Java types. This is = where=20 Hibernate
makes certain optimizations appropriate only for immutable = Java=20
types, and the application treats the object as immutable. For = example,
you=20 should not call Date.setTime() for an = instance=20
mapped as imm_timestamp. To change the = value of the=20 property,
and have that change made persistent, the application must = assign
a=20 new, nonidentical, object to the property.

Unique identifiers
of entities and collections can be of any basic = type=20 except
binary, blob and=20 clob. Composite identifiers are also = allowed.
See=20 below for more information.

The basic value types have corresponding
Type=20 constants defined on org.hibernate.Hibernate. For=20 example,
Hibernate.STRING represents the = string type.

It is relatively easy for developers to create their
own value types. = For=20 example, you might want to persist properties
of type java.lang.BigInteger to VARCHAR=20 columns. Hibernate does
not provide a built-in type for this. Custom = types are=20 not
limited to mapping a property, or collection element, to a single
= table=20 column. So, for example, you might have a Java property
getName()/setName() = of type=20 java.lang.String that is persisted
to the = columns=20 FIRST_NAME, INITIAL, SURNAME.

To implement
a custom type, implement either org.hibernate.UserType or org.hibernate.CompositeUserType
and declare = properties=20 using the fully qualified classname
of the type. View org.hibernate.test.DoubleStringType to see the = kind
of=20 things that are possible.

<property =
name=3D"twoStrings"
type=3D"org.hibernate.test.DoubleStringType"> <column name=3D"first_string"/>
<column name=3D"second_string"/> </property>

Notice
the use of <column> tags to = map a=20 property to multiple
columns.

The CompositeUserType, EnhancedUserType, UserCollectionType,
and UserVersionType interfaces provide support for = more=20 specialized
uses.

You can even supply parameters to a UserType in=20 the mapping
file. To do this, your UserType = must=20 implement the org.hibernate.usertype.ParameterizedType
= interface. To=20 supply parameters to your custom type, you can
use the <type> element in your mapping files. =

<property
name=3D"priority"> <type = name=3D"com.mycompany.usertypes.DefaultValueIntegerType">
<param name=3D"default">0</param> </type> </property>

The
UserType can now retrieve the value = for the=20 parameter named
default from the Properties object passed to it.

If you regularly
use a certain UserType, = it is=20 useful to define a shorter name
for it. You can do this using the <typedef> element. Typedefs
assign a name = to a custom=20 type, and can also contain a list
of default parameter values if the = type is=20 parameterized.

<typedef
= class=3D"com.mycompany.usertypes.DefaultValueIntegerType" = name=3D"default_zero">
<param name=3D"default">0</param> </typedef>
<property
= name=3D"priority" type=3D"default_zero"/>

It is also possible
to override the parameters supplied in a typedef = on a=20 case-by-case
basis by using type parameters on the property mapping. =

Even
though Hibernate's rich range of built-in types and support for=20 components
means you will rarely need to use a custom type, it is = considered=20 good
practice to use custom types for non-entity classes that occur = frequently=20 in
your application. For example, a MonetaryAmount=20 class is a good
candidate for a CompositeUserType,=20 even though it could be mapped
as a component. One reason for this is=20 abstraction. With a custom
type, your mapping documents would be = protected=20 against changes
to the way monetary values are represented. =

XML
does not suit all users so there are some alternative ways to = define
O/R=20 mapping metadata in Hibernate.

Many Hibernate users prefer to embed mapping information
directly in=20 sourcecode using XDoclet @hibernate.tags. = We do
not=20 cover this approach in this reference guide since it is considered
part = of=20 XDoclet. However, we include the following example
of the Cat class with XDoclet mappings:

package eg;
import java.util.Set;
import
java.util.Date; /** * @hibernate.class * table=3D"CATS"
*/ public class Cat { private Long id; // identifier private
Date birthdate; private Cat mother; private Set kittens
private Color color; private char sex; private float
weight; /* * @hibernate.id * generator-class=3D"native"
* column=3D"CAT_ID" */ public Long getId() {
return id; } private void setId(Long id) {
this.id=3Did; } /** * @hibernate.many-to-one
* column=3D"PARENT_ID" */ public Cat getMother() {
return mother; } void setMother(Cat mother) {
this.mother =3D mother; } /** * @hibernate.property
* column=3D"BIRTH_DATE" */ public Date getBirthdate()
{ return birthdate; } void setBirthdate(Date date)
{ birthdate =3D date; } /** * @hibernate.property
* column=3D"WEIGHT" */ public float getWeight() {
return weight; } void setWeight(float weight) {
this.weight =3D weight; } /** * @hibernate.property
* column=3D"COLOR" * not-null=3D"true" */ public
Color getColor() { return color; } void setColor(Color
color) { this.color =3D color; } /** * @hibernate.set
* inverse=3D"true" * order-by=3D"BIRTH_DATE" * @hibernate.collection-key
* column=3D"PARENT_ID" * @hibernate.collection-one-to-many
*/ public Set getKittens() { return kittens;
} void setKittens(Set kittens) { this.kittens =3D
kittens; } // addKitten not needed by Hibernate public
void addKitten(Cat kitten) { kittens.add(kitten); }
/** * @hibernate.property * column=3D"SEX" *
not-null=3D"true" * update=3D"false" */ public
char getSex() { return sex; } void setSex(char
sex) { this.sex=3Dsex; } }

See the Hibernate website
for more examples of XDoclet and Hibernate. =

Generated
properties are properties that have their values generated = by the=20 database.
Typically, Hibernate applications needed to refresh objects that contain
any properties for = which the=20 database was generating values.
Marking properties as generated, = however, lets=20 the application
delegate this responsibility to Hibernate. When = Hibernate issues=20 an
SQL INSERT or UPDATE for an entity that has defined generated = properties,
it=20 immediately issues a select afterwards to retrieve the generated
values. =

Properties marked as generated must additionally be non-insertable
= and=20 non-updateable. Only
versions,=20 timestamps,=20 and
simple=20 properties, can be marked as generated.

never (the default):
the given property = value is=20 not generated within the database.

insert: the given property value is = generated on=20 insert,
but is not regenerated on subsequent updates. Properties like=20 created-date
fall into this category. Even though version=20 and timestamp=20 properties
can be marked as generated, this option is not available. =

always:
the property value is generated = both on=20 insert and on update.

Auxiliary database
objects allow for the CREATE and DROP of arbitrary = database objects.
In conjunction with Hibernate's schema evolution = tools, they=20 have
the ability to fully define a user schema within the Hibernate = mapping=20 files.
Although designed specifically for creating and dropping things = like=20 triggers
or stored procedures, any SQL command that can be run via a = java.sql.Statement.execute()
method is valid (for = example,=20 ALTERs, INSERTS, etc.). There
are essentially two modes for defining = auxiliary=20 database objects:

The first mode is to explicitly list the CREATE and DROP commands
in = the=20 mapping file:

<hibernate-mapping>
    ...
 
<database-object> <create>CREATE TRIGGER my_trigger
...</create> <drop>DROP TRIGGER my_trigger</drop>
</database-object> </hibernate-mapping>

The second
mode is to supply a custom class that constructs the = CREATE and=20 DROP
commands. This custom class must implement the org.hibernate.mapping.AuxiliaryDatabaseObject
= interface.=20

<hibernate-mapping>
    ...
    <database-object>

<definition class=3D"MyTriggerDefinition"/> </database-object> </hibernate-mapping>

Additionally,
these database objects can be optionally scoped so that = they=20 only
apply when certain dialects are used.

<hibernate-mapping>

... <database-object> <definition class=3D"MyTriggerDefinition"/>
<dialect-scope = name=3D"org.hibernate.dialect.Oracle9iDialect"/>
<dialect-scope = name=3D"org.hibernate.dialect.Oracle10gDialect"/>
</database-object> </hibernate-mapping>

Copyright
= =C2=A9 2004 Red Hat=20 Middleware, LLC.

------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/1.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAgBJREFUeNqklEFPE1EQx//d7W67bQnQiNA2mA14pxhNMCTa8AGIBw7G i9WEs/0G8hHwbCJ8BEg8GBJMSQQxkbAXYjTQFIGm2NputWWh6xpnNtum2NcDOsnsvLy383szb//7 fOhhL16+mqCgkyfJs+T5Z/NPD0Xv+gTJjyks2PYvvd44g3VmIRIJIxTS4PfLeVrLEGxVCKHkfgor jYaV2vu0j2q1BlVRoCh+chmyLGPo2iBisetQVXWZQE9auVIHcOXrcTG1tr6FYrEkbLFSMfH5Sw6W dZ6mTZcuQWjiefm7mXr3fhe2bXclJ+IxaMGgO3YcBwe5PJrNZtprvV1JZuuDQQvdgJAWxHz6EYFG 2nOO8xunp2UeLvDDT7T7pXJ14KRQgqYFLgEezs1ieuq2e6hdrVVNxOPDOn9FriR1UvgmPIOj4wLe bmz2UgHq9QaHpNvOhaANts3tj3j9Zr0nxDq/4KBL+A9jCZCZDDHG9MQ/QSKREAeDIVkSkdnXF74i IMyiM0l0GxI9ajS3PHPvzpUg8dgwh8W27D3JZw9yR8md3T0EAyoC5H/LXpZ88JHfGE0gGh0wqIDJ tti8atLjY6PG9N1bQl24B6kquDmuuwCWhvAv9ipiFWYqlRpqP37S7hIkWUJ0sJ/hptfCorex+Cro gD3w7pOW8e7ZzuSW/RFgAMayrykYOir5AAAAAElFTkSuQmCC ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/2.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAmJJREFUeNp0k0toE1EUhv/Jq5lJhrRpfVSpjdYiomiwNFBRG6yGSqV1 46qLVqFr69KVdeHGVe3GhShxI4ggcWlpJSHSggrWJ01LY0JJVKQ6aXQmVGI9Z5jEpJlcOJzMybnf /PPfcwWYrNt37x+ldIEiaJQWjIhcGbuc29ovmGwOa1rBv7amIP/rN7C5CY9Hhiy7KVwK/T9JoBum EAKMMODDp2VkMt/gsNtht9sorLBaKSwCJJeIPW27IYrOKCstqbIYgN6NjT/h6dk5JJOrqLdIIVaS Kc78mZOlusXI4bfvE1CU9fKGluYmnO/vw7nQaQS6/OV6sfiXQGnKxVF+Odds9GOIvt33cTEJyenQ GyVRxPVrV6EVCvjxU0Fnx149Hj15aoCKyGS/8qeN02OMlQQTy+kq2SeOd0OSRNy8NYWpO/cQi8+j u0INr9x6HsYJwkbhz375XtWgqhpmnsehkgdsbMmPysVqVE3T/bSZGfhi/hVevl7QT+fIoYPoPdmD ZzPRmj72p2ysLEump9ETOIaxS8MEfIPp2VoIHTWnFEMiu3Zur2kYHDiLkeGLiMbn8PBxpBbgdMJm tSo0K2kdcqCzHbL7v5pQ3ykMDYSwmsnqvvSfCVItCG9TY7lnW0szJ51uYRLPSaDrcJWxi0sr0NSC frT79/nQQcFv5+V2u+D1NvIVmCiPPTnsoRRNpTP+dzR0DQ0O07EXKGQC+HxtXBslAQ+23h0dpKoF f2Lpsz69lRCRBrG1dUdJwXgJUHOLKy4iy/TlcnkIgqAro1AMDyYMC1AXUgFrZ1DpmTbG6vX+E2AA iVzl3KfvtyEAAAAASUVORK5CYII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/3.png iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAlVJREFUeNqcVEtvElEU/oYBChbpdIACpSKmUvuwCsYaNZrURU2TGmWh C91I1MZNTXXjxoX+BF250PiIey3xEYmv2miwPktcuWiDJuUNnQEG685zJ5Q41GLiSU7u5Oacb75z zncuhwa7duPWRjrOkw+TB2rXEvk0+dTk+Km7jTlcA8BlOq4sJjPIZotQlCoMBh7rLa2wWi3o6LDB aDTOUUyIwL6vAiGA25JUCse/fsPy8i8YDQYC0KsgPE+u48CRezwuOOw2xmyYgOIsV1cDmKwo1fCr mQ+Q5TKaWZJYpjM5gT7vrNzxBNDGaiUAU7X6E3o9r/rOHdswHj6Bw2MH4fN2IZsroKIo4DhOLdPS us515Ogx6enDyCxjEkqmckIqk6//rbenGxNnwyguSbgfeQKxXUDo0KiGUS5fRG0A0LPaEj+SmoC+ ns3IF4q4fvOe2hO7TcToyAFNjFwqscPHKmEgvnxB0gQ8eBTF4+hLDPT5Edy+FbuHgph5+25Vf8oV hU0uoGvWRJvYji6PG2azGWaTac04xiRhtwlUv1y/3L9niOiWEXv/GR+/xBEYHMDpk8fxJjaLZDpT j2P6IZtjTKZ93k4N8r69u2gqI01H3Wa1qgCkFZkxmep0OyS30y7IstosRJ+/xoWJM7h08ZwqPH/3 JswvJLCYSqsjZuawi1jRCveH2K4+exFTldnSYsRg/xb09/qh43WQJBmfqCymWAbidDrgcjoYi+B/ yd67wQNRFDSyX3MBl4oyKbQKxr5hAdk2h/+6gP94ChKsiawHlBxpzPktwADNdt6wq7lOggAAAABJ RU5ErkJggg== ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/4.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAkFJREFUeNpiZMABJs6eJw+kFGD8/NSkg7jUMmLRHA+kGv78+aPw9et3 BkZGRgZ2djYQ/gAU3wCSAxr4EKshQM38QOrAx09fDO7de8zw4cMnBlZWFiBmZmBmZmbg5GBjkJQU ZxASEgAZVgA0aCGKITADHjx8anDp8k2wzWysrCiGMDMxMjACMS8PN4OCgixILAFmEBPUsAmPn7ww OHXmMgMh8OXrN4YHD5+A9UDDjYEJxPj561fC4ePnsWoK8vNimNDZiGrQl68M7959EACFD8wlCQ8e Pmf49es3hgH6uloMjnZWWA1//eYtiAqAGeLw7MUrDEVcXJwM8VEhDLfv3MdqyPcfPxj+/P0rAPIJ OEw+f/6GoSg7LZ7hybPnDNt27cMZPt+//wBRCkzYJAN93BnkZKQYFi5dgzeQ2dhYGWDeuSAlKYoi qaGuAqZB3gn29wKzM1MTGKQlJeBqQNHOzsYGTsksoPShripfcOXaHbiCpSs3MPDz8zKwMDMxyMtK M8hIezPs2nuA4d37D3A1QoKgyAGnYAYmoEkbgQnogbaGElzBoydPGW7eustwCxioT569AIvdvfcA HJgwV0iIg10/ATmxBZga6zAICPBh+PspMHCnzJyP5A0mBmUleZBBC2CZkgmaQy+C0oubsxWDkpIs RlTeAboCBHiASV5ZSYGBk5PjACj/YM3FwDjXBzkRGHUOb99+AEchMDeDw4eXlweIuUGBMgFoaSPe ogDJMFBqNABiUAhegOINQAM+oqsHCDAA/mTGI20yC6gAAAAASUVORK5CYII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/5.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAnBJREFUeNp8VE1sElEQnv1tIaXdWIu00lJKbXqTgzGmVovKxaQH9ODB i9SkMSZNiok3L/bitTXx1kQx8eKNxouJiWmvxkRbTmjs7qZCQUAgoPwJceYFCAurkwzzdt/Mx8w3 M8uBiTzdfu5CE0BVul5/Xl+9u2Pmz5kEh+v1P75sNge1Wh14gQdJFEFRhmFgQNbw/jGCvTQFQYAl NJHYF1WJx1PAcRxIkogqgCCg8hzYhodganICZFkOI9CKAQQBzqLZ/fAxqiSTafpHkCWpD4RDFUUB PDPTYLEMbiHQA4rnW2Bb+9GYounxToqTzgmYm3XDGY8bZjGIAkkajSZo+hHaRqiVPYh0KJZ++T4d xMA6KHdA1u7dgZOjJwwEPny0wSxxlc78BMepsRA+7onUBU1P9DFOAJvPtuFQ0w3ltCWdyRJIgGWC 6lV7QKawFJIrlxdg+bofcrk8vHu/B7lCoeOD5UC1VmN88mZ9t1otzJYrFfj6TWWc3F8N9vlRWTRL lAm2TDJcZnBGNp5swnHqB+vOoaojRyuMXDq3BTtERqNMdt2u0waQ+TkP+K9e6jyXy5W+LHBWQBSE PLZZJ5DItGu8L5uLF84hH9dYi2/fCjCgRCLZuXfYx8hE6Ed4+2YntXzjplcZsc1/jyfZMCWOU9gR Hvy+RVhcOA/FYglevHrNiKVJpjKcznGKD2B8oT2xI1QbDptyEI39d2KJdM+Mi94F2zvUvTs0+uFM Nu9V1SMolX4bQGQ82+2j4HDYyT3YvYS9W0wZ0RSGKpWqUq3WoNFs4hYLYLMNtTmgLd7/56egB3Cp daSl0Vrfk4KZ718BBgBif97jHBwpBgAAAABJRU5ErkJggg== ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/6.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAnZJREFUeNq0VEtrE1EU/pJJpnk0ySTTSEyrbdWKgmDxD5itG5NFBRWh QSkUN2bj3n/gY6PgqwHtwoI0SMGKQtpFN4aQakKRWpq+ko7mMamPvEzxnmumNGm79MA3h8ud893v fPfM6NAW9x8/c7AUZAgw9DFIDAmGNMPYrZHrM+01ujaCYZbuFYol6ZuSR7lS4S+YzSY4nXbIshOC IEzSIYystIeEETyv1evBWCyJHz9/QTQaYTQaGAQqhKDXwcDW3V4PXC6JlPk0In2TwF+r1YPR2Y/I 5Ys4KBqNBtbWMygU1UG2jO4oaXqQnn4/J5VKWzB1iOhg8HoO4colP6xWC5cbmZpGVlGg0/0Tf/rU CYiiSG2FSUkgX1ClrJJrOfV2aJR7EJ2d497cHAnCbDLt7G8q3ymFtHZ8XxZXWgjOnT2DLtmFR09e 4FNqAeOvJrG0nOYGa8FaojRInRjoGnN5tYWk90g386aA4atDODlwjBUU8e7DDC/U2qH4XS7DYjYP 6g8ykZRQGw8ePsXXpTQuDwXgckptRm9Da0e12Sz7EoVfTmBxaRnjE5N87T3sadm3dVopJYgk2n+0 u2VzZW2D554eL8+aAlKmhcNup5SmWSFPxvp6vXfklEMqsx4p4vNJrDKi0RvX8Dm5gIHj/djIbCLD oIW7y0VpjB7C2zeR6oWLfpO7y+lbW1egZ8YZDALiiSSq1Roa2w1ksgpeR6ZQqVa5sUQgyy76loJU 3zL2qroVjMVTfDL3G3sdg9st0+irzbGf3+8DvFuv/wmtrtJol7gSIhFFI/PFwYevs9NKCgIawR6S JtH5Xb+C3Xcabf4Kwvgf8VeAAQBgh/XTjV8wPQAAAABJRU5ErkJggg== ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/7.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAkBJREFUeNp8VM9rE0EU/nZnszYxv5pga6NpQkvowUtRKoJgAxWKRWz0 6MUg9GwO3ry0/0E8C63ixZsRD14rUgKKGlKL1FaTWEyT6CZpNr8gRpyZbkI23WTh7czOfO+b9755 byUMeR4/WZ/XpokHK/ePBuEEA8dlOoSphWq1Otrtf7DbrWwrTe0ptWg/odDj7GCger0Z+pH6iVJJ hUB3TSYCQggclGhszA2Hw15mB1CitzoSjWDzV7Ywm9zehSgKkE0mSiB1SQhdE6i5XE5Mes8xt2CH SNTIVnMFZXYr/gmtVmuYTDTCIxwcZNk0ph0OiU58dIxsxT93gbdvLuLO8o0TBA8frfGxWCoznZw0 tQj9XJNYfrt7GajVOiwjMge9i3/AfioDiYiQJIKV8F1kD/M6wlz+N9Mn3CEJZnMFHeCPUkSlonJN bi1d59JtPH+hwzSaTfxtt/0sE6aJU1Xrhvm7qYhLiwt4+foNd+p/Gg2+5heHiXjl8iUoxRLef0wY 7hNy7M7eac/EGUPQwvxVbO98HUBAYDGbwa6ZkcRmAr4TIO95DywWM5JfjEkcdhtvBx4JZXpls55O B6YndaCZwBQf976nDKM4O86jj/I60dYjcxcvxFivNI/FQiK5g8Nc3jAKj2ccsixv0gCedSuWRSPL pnDw2hy83gntmkv4tq+PgmIwPeWDa9TJ0ggZdrHWwdGKWvUrShnVao0WHMGI+RTsNivc7tFOCqu9 nSwM+I/cY0XIaqBnOcaMOmf68f8FGACZQMJxI6o4TQAAAABJRU5ErkJggg== ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/8.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAn9JREFUeNqsVF9Ik1EU/337tm9/o8011GZYiCJIJUapSLXMysqBGtFD LyPouaLXHiwIoocwe+hBip56CCJHPRhFzJ6ielhFf7Y15zJ1083NZeSWus75/LY23Hrqwtn9du89 v/M793fOFVBi3By+u5EmB1mzspQk85w7e+ZdqfNCCedBMlcimcKP1CJUogpGox4bTCao1eIE7Z0n MHdJEALYydEikZjZHwhhZWUVGo2aTIQokqkEWK0W2O1V/H+QgC7kfEUFoJamV6/ffjD7/CFkeYMd iQWbSkUmCFhKp7GwkILJaGxz9p/A6GP3GPurFLB7n33j5onwVJ7iJoraub8DRw93YntTY349k/mN ye/TxHRlQGEPkT/Smcy1Fy/fyNEob1RV2nDl0kVsqdkMg16PrgN7odfr4AsEIdCZ5eVlCMTOZDLq iI2bmfT6A2E5Qm40NtTBYNDj6vUhDN2+g/sPHmFfR1uRIvMJFgwu/lGzlFMzc0UHvk2updXeugsz kaicjuJUkFYGlIEsiDqXZ+GIxRMy0Mm+nvza0+eedfXBflpJMssgkqQp2jx9qpcutgI3bg0jEo3i ePdBHOly4NMXH6aJWW4ofkm+E4+92lYEwgDe9x/h/zqOX0tLGH22xkJHl/sXQGIWSa5iBhlpqK8t YhOLz6N5RxPa97Sgvm4b+pzd8nqi4F4qLGaeRmSJSaJoT1+/g6TdOjsblyUOBCdQabPCeewQWne3 kIMFD91PEAyFZYlZ7hp7NRehi/2Fgor1csVGInPQaiVIGs26shfIWHquHwIaoFQu/7feKdvFi4s/ kaIuXs1mC7vYq3TxWNmn4B/vCT8B3nLvyR8BBgBxU/RbZ7ZToQAAAABJRU5ErkJggg== ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/9.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAolJREFUeNp0U91rUnEYfo5Hnd/4scw5Kmmsgi7mqGSrlkJQeNF0u4jo pihGBKOiv6C/ICyCLkYldVE30aJdLAragmJQkLVWSqVzza8t9aiRXzP6/c485nHuhfe8B33f5zzv 83t+DNrEjYm7Z0hxkbQ1/TxJ8/LYuWhrP9My7CHFly/8tq2k0iiWSpCyLBTKDui0GphMBtrmI3mN gOU2gNCvV6pVf+BjENlsDnKZDDKZlCQLlgCxEgYdCjm2b+uGRqMOUKYCkERgUKlU/TOv3yGZXMVm QXrwIxxFJsvZ6+uhAUIpvpkLgOPyjYH+vr24Oj6GSxfPw7HPLgKLx1MEsOKqawcJfUlnOFv0Z6LR dHjwAMYvnEU6m8VyLIHTJ0dw7Kir8X+tVkMyxTO+Qh9SulskGhd9aeigA2/n3uP+w8e8JhKGwZFD A3jxarbRk8sXaLEL69jiic11EEKpVECpUIjY/CkWqZ5OabuBYOg7Rj1uZDgO5XIZjv3rmlitFoQj 0SagvxDW4bRaFVG8cex4MvUcWuKLXT07wZCjnV8IEqB+cjKLYJj/1tJq1LQs0nVmrBaziMnIieNQ qZS4fmsCN2/fQbFYoscq6tGo1wGogymTyd29O3yfv3xDbW2Nb4guxTA67IaEsCiVynAODeLeg0ci kC2dRlr89MFOP3uacw979JatpoFwZBlSKYvVX2nimRz29PZALpdhavolFr6G+FVoGg16mM2dlNop Ml9utv2HWHzF/mk+xDNoZ3uqj9Go561ft/2sIKwQrm6r2W/Q67zhyBK5PwWxBkTEri4zrZSBVwDY cIvrjJx1J3qpHvS+6HQaXsS6Br7mG9wWpAWwjxQ9yUDrYHP8E2AAV4X0abG2xV4AAAAASUVORK5C YII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/10.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAmtJREFUeNqslMtrE1EUxr+8JolJ20li6piiHRuRkBpawY0ItgpduKr/ gDS+kIJQceHGhW4UERcpboRCDf4B0oLoSk191Ed8JLhRRE0sjWlqkom2zWTGiueOk5CYtLjwwsnc nJn7m/Od+90B/sMw/J0Yn5jspssFikEKse5WgmKKIjJ24mhpTQgBzjNAOp1BbjGPSkWBxWKCyWSC 29WBzk4PnE6HRM8cItBME4QANyTpezj59j1kuQLOYiGAuQYxGQ0wULjdPLZu6YIOmmYTow4YWVpe CT94GKfFHLwed4NEu80Gf48I/zYRcrmCubkMS0d16TDrz0WePE1AVVWMHj+MDx8/4fbde9qNLp+A sdFjDcqvT95EoSDxVBXr3REj0YbzlAgFA5i4dhk7gzsaqjg4dACFooSLVyK4dHUcZVnG0P59yOYW NUlVOf2fqZELuW+4PzOrNbR+9IWCePEqoS1m8fJNUpOlKApWymWeihhgcvp/LC0j/eWrJiPUG2jy wXwmW5sXqSq73abNV1d/oVqJZOW4fzaWy8U35Rgk1ebcsO7C7X6xYadYj9jgOAu7SAwyJXb71gQ8 i7/GwN49ZDYevs0Cdu/q0/ridDhACiTyStLIftqcjlRvoKcl5Nb0HXpzEefOnsaZUyeRyWbxePY5 hE1ezRo1x7IOK4oaiz2Kk5lkWK1ck2O9Hpfm2KJUgnejGz6fkGKbws5Rve1HFFWNJpLvaAdKLW1v pv+C4CWIhzVlkKlodQCHWYmFYknMLeSh/lT/NJCALlc7eL6dmsnFKBUmQHq9T0GH7kQWvP45SOkR rT+91fFbgAEA4gvmEfx/jooAAAAASUVORK5CYII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/11.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAj5JREFUeNqklE1rE1EUht/MV9MkNW36EZMYGRoVQcQoKpZYDbpyI7py p6miK6FB3NufUNeC9idUcCGFSoRScSEdlShKE2O1JTVpMtGkM8kY8dxhMqR2XFQPnDlz5855zj13 3jsu/MXuP3h4hIJMHifPkBcmb17/7PSuyyH5GoUpw/gp1xub0DY1+HxeeDy9EAS+QHNpgj12hFCy n8Jso6Els++XUa3WIIkiRFEg58HzPIaHBhAKjUCSpBkCTXRyuS7g7MrXYnJufhHFYsmxxUpFxYeP eWianqKij7ZA6MG98oaaXHixBMMwqOIghgcDdnKv241IaLd53263kcsX0Gq1Ulbr9krSiy8VmjDM wd3JWxhPnLQhyfExXL54wR6327+wvl5mt1PsIhDtbKlc7V9dK+HO7QmcPnUcwZEhKG+yiO4J48bV K2Zczhe2tlZVEQ4HZfYVBVZode2bOZH7tIJWs4XzyYQ51jQNr9++g67rcHHctj2q1xvw+3fFGQRN q425ZwvwuCUcPnTQHJc3qnjydB4c58KB/bFtEE1vEgQyh/8wJgEylUGUUTnyTxCfz8OCwiAZEpHa 1+fdIcDLRKeS6J5zdKnRs5lzZ07sCBIOBVmYtmVvST6Ty3+Jv1rKwt0joYf8T9nztMEu8r3RCAKB foUWcNQWm7WaVGw0qiTGjpmHzXEjJRH7YrIJYNJwPMXWipgK05VKDbXvP6g6B47nEBjwM7hqtTBt FXb+FXTBLln/k46x6pnu5I79FmAAlOrGc6mXxd4AAAAASUVORK5CYII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/12.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAolJREFUeNqElOtrUmEcx79Hj7d0erxsbbmmrojVBjq20YsgrUUFBQkF 7UWUdCGK2lZRBFFU1NtYEPVCavYfCAXRO9cqRjU0wtpoW8rUXSqdRkzmXvR7Ts7MSz3w5dHzPOfD 7/L9HQ4V1l3vIwttHpKDJJAipBDJ33fiaLT0PlfhZV8ut+ya//odPzI/kVvOQVujgVq9CiaTnl3z kfoJli6DEMBOWyASjQufxqYgkXCQy2SQyXiSFFKplP7zsFjM0Om0LDI3gd4XIATQsZBfjQSFeHwO SoUcClIpREpgjtS01gyDQWDpuVhEfD6QgUg0IXyenMbeXS6k0xlMTEUKaW7ubIfJaADHcQiPjWM6 loBcLnNoNOp+Or4hyUfheTkSgr2tBceP9KB144YCYM/ubhzq2Y/1zVZ0dThw/sxJrLNZkJiZY8cM AhaJO5aYx+2rF9DhaC3rVLdzCwLDr+F/+lxM59a1ywSxYvJLFIuLWYGCcEronjVOkN5LN7Fj3+Ey SCw+Q5oVf6uUyr/OCMI2B4//rDv3vIXCHjzgFp+9DYpNwVIuxzZBhCjksn+CWAR9p4/BoNfjwcPH SKUWxOca8g7rKksn0GxrrAowGvToPfUbcN/ro4LO/oGrxPQCEurzkLZGHTGvqa0IuXLxLBrNDXgz GkTbphbs3O5EZ7udoAJLMcTGYKUm17dt7fI9efYCH8LjYJYvLiwzmLmhnqzJie78lkwiu5QttLjY 9oPJVNozNPxObGU1xyqUctisTSyVAYriXKUBHKSKe8IfJ5BKpkWHrkDIoahfXYu6OiMDFgBlkDzI ydJjc5FayEBCIJ7naYpV7NjPRoTVseqnoASmy39PxFX6YvH6JcAAn33QvdPm2PwAAAAASUVORK5C YII= ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/13.png iVBORw0KGgoAAAANSUhEUgAAABEAAAAQCAYAAADwMZRfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAmxJREFUeNqUVEtME2EQ/kqfa1tb+n5gAj4wBAK9eqKxohLQkmgMIUGr UcPFcPbmxYsnNJ40MYWjB0LjQYIlFi8kkIYSC1ZtjKa1glDaxtJ2lzZx/k0lpWjASSY7uzP/N/PP N7MS1Mnj5y909PCRDpC6a1wh0ilS/+idW7naM5I6AC8L2kxn9YnED+TzBUgoQqPmoNNrYTIaoNWq v7IkBDS3D4QAbgjCjn8xHEU6nYFSqYBCLodcLiOVQiolbZDAaGyE02lj7wxofBeEALp4QYjMBOdR LBahIoB/gUhIdbqjaGk+lqWjLgL6JqsWMvZ+JY50Jod7d4fxPbWG+YWw6DjCqXDtyiW0nmhBscRj 5UMMb96+w8bmlt5sMjygkJsNYhW84C4UBAwPDsDb1wOL2bjbp+tDV9HZ0YbpYAjR1RjOe9xobzuN 9fUN5vYxIhoYA8nUT3i6z8BFwfXi6mzHZOA1FsIRzMyGxG9Ouw2VSoUavy2GsOvoiQ08mZ0AxykR DEzsARkZvS/2pO+CB00OO/WshMWlZdFXLJWg0ajdMhxSTh5vhsHQKNqcSolMjY9dJ2sy6v960ER0 9l/0iPbTZ348fDSGrUwWPWe7q2AqcQgZyFSTwwKFUr4PxEiZ+3vP4RQxUy+McroKMyMyxjN1ONTV 0eqOrsb3BH78/AWJZAq3fUNIEe0cx8HpsBHFc7BazfizAlJm9V72Rhx280giuYbyThmxT3GxbJZt aTmKbC6HEs/TbKTxcjKAX9t5OOxWNmyD068Cuf8ee4vFJI59dX/GD1xAnia0TPNw6AU84FfASo+w BIyI+l/BbwEGAAgu9pHCJuhUAAAAAElFTkSuQmCC ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/14.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAAnVJREFUeNp8lE1oE0EUx/+7SbbJJjH9iGnTqE2keFDRiAoeBCPFSosf VVDEQ42KngT15kk8ePCiVHprQYOICB7qTVFRY6WXVoxoRTQ2KbVpqibZzXeyCTiz2YTGbPpgGHbm vd++z2HQRO6O37OQzb3iKHD5wjlRTZdRMd5HthtkeRJCEizDQKvVwmg00OunZI0QmL8phADuFyXJ O/s1iERcBEMAOp2WLA04ToeuzrWw2Tqg0Wgo6GoDhALiCdHrn5yBhmXQ0sKB0+lqEGJYOddzcDk3 wGDQ+wjoLLVlFcCZVDrjff5qCpIkYTUpFiWE5xdQLpe9xO5oDUJz8ObdtKwwPnoLJ48fajA26PW4 ef0a+vs8sl4ksgwld2BpIpOpjHPbls14OHYbnTarqgfnh0/REGrf8YRAvXET+x7qiWcu9Eu+ePH6 vSpg4MB+OLrtWIxE687T6QzdPHI4BeLes5d+PHg80QDY1OvC4ME+PHoygVw+X3eXyxfo5mRXSyLP GzB8+gTeTk7h8+y3hntaPSIChYQd3TZVyHqHHdaONvRudOHSRS8c9i7s2rEdRwb7K8mu5CigpV24 jkDMZiNKpVIdZGFxCXdGx0jHasCyLI4dHkAkGsXMx08wmYwUItDuZZV58O3d427wJJvN4XswhB8/ QwjOheWcJAQRkaXlahVHah2rDFt4+sOXViNvhCgmkUylGjqWhlcoFmQv2ttbA7Qy1Ak5sYo3nt07 two8z0EgEDX5G4vBYjFXAUPVqWZUxt8nSaWh339iyGXzcghrzCYyxTys1jaq5iPryspngWnylvTQ PynviZOGSqtAi0CM5//X/yfAAG2S6MWO0yTPAAAAAElFTkSuQmCC ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
image/png Content-Transfer-Encoding: base64 Content-Location: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/images/org/hibernate/docbook/callouts/15.png iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ bWFnZVJlYWR5ccllPAAAApxJREFUeNp8lF9IU1Ecx7/33m26Tbub0h915qUoDZEtMYqisIJEDDIk whfT/kEQ5HM95Eu9CfbQS0Gt54I0KkJpbC20aOokJKLWJlJEOr1u/sNt1u933WRuywPnnnvOvedz vt/f+Z0jIEe59/CRTE0zVSVtOES198aVi3OZ/ws5ALep6YxE5y3hsApJFCFKIsxmI6wWZsPJ39Nh QsbqblWNOHwj40gkEjDo9dDrdVQlSJIEY74BNlsJZHkLq2om0BjPFdNEuAM/Jh39bwexuLiUyyVW VmIIhiYxM6Oyzd7kwtClLEyHVYd3aBTVlbsRj8cRiUa1iSZjPpQKG0S2JQoQBAGzqsrKFFku7KFf OoQkJPjitVuxyjK6797CmwE3+l71a3bqamtw7XLbBkUDLg/c7wexr2oPdy06Atgj0QXlQmsLmhqO Z1mwlZXiWyCI+w+cFGRSklTDZX5+AQUF5ma245iansVH3zhc74bQfefmBkhxkRVFVguuX22nbRAw PDoG3+jYGmRhkSEKQxSKB74HJvDz1+8sJQwxUlw+DYe09/MtZ7TxFCgVWH9Z6TaM+L/k3JFnz19i JRbDXCSi2WFgXa1dg0jS2ubyM7S12IL/lXNnT1Ncdqz3l5aX198LzGZu/CInTF6eIVRVqeSE/KXa eOoEaqqrcPTIIRyodSAQnOBYsCqV5velkq3z8EE7DAY9Po9/xZ+p8DrkKdlZouS71NaKhpP18A5+ gMvjRWnJdv7ck5n2j2dm59o9Xp/mndRlpT2P66i/s7yMUr/QTyr2b0h7GugossrOpsZjKC8vyWmN zgwq9+5igJu69ZudYt7Drlgs7uA8WE2sampMJiN0OokPXhct+GTTqyANVpG8T5TkXaKmTm1m+SfA ABq24tywBQwRAAAAAElFTkSuQmCC ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/documentation.css OL
LI { PADDING-BOTTOM: 0.5em; MARGIN: 0em; PADDING-LEFT: 0.2em } UL
LI { PADDING-BOTTOM: 0.5em; MARGIN: 0em; PADDING-LEFT: 0.2em } UL
{ LIST-STYLE-TYPE: circle; PADDING-LEFT: 1.6em; LIST-STYLE-IMAGE:
= url(../images/community/dot.png) } UL UL { LIST-STYLE-TYPE:
circle; LIST-STYLE-IMAGE: = url(../images/community/dot2.png) } DT
{ PADDING-BOTTOM: 0em; MARGIN-BOTTOM: 0em; FONT-WEIGHT: bold } DD
{ MARGIN: 0em 0em 0em 2em; PADDING-TOP: 0em } LI P:first-child
{ PADDING-BOTTOM: 0em; MARGIN-TOP: 0.3em; PADDING-LEFT: 0em; = PADDING-RIGHT:
0em; PADDING-TOP: 0em } DD P:first-child { PADDING-BOTTOM: 0em;
MARGIN-TOP: 0.3em; PADDING-LEFT: 0em; = PADDING-RIGHT: 0em; PADDING-TOP:
0em } .variablelist { MARGIN-TOP: 0.6em } .itemizedlist { MARGIN-TOP:
0.6em } UL LI P:first-child { MARGIN: 0em } IMG { MARGIN:
2em 0px; DISPLAY: block } .inlinemediaobject { MARGIN: 0em; DISPLAY:
inline !important } .inlinemediaobject IMG { MARGIN: 0em; DISPLAY:
inline !important } .programlisting A IMG { MARGIN: 0px; DISPLAY:
inline } PRE A IMG { MARGIN: 0px; DISPLAY: inline } TD A IMG
{ MARGIN: 0px; DISPLAY: inline } TD IMG { MARGIN: 0px; DISPLAY:
inline } PRE A SPAN IMG { MARGIN: 0px; DISPLAY: inline } PRE
SPAN IMG { MARGIN: 0px; DISPLAY: inline } SPAN.co { POSITION:
absolute; LEFT: 900px } .confidential { TEXT-ALIGN: center; PADDING-BOTTOM:
0.5em; TEXT-TRANSFORM: uppercase; = BACKGROUND-COLOR: #900; PADDING-LEFT:
0.5em; PADDING-RIGHT: 0.5em; = FONT-FAMILY: serif; COLOR: white;
PADDING-TOP: 0.5em } DT A { FONT-WEIGHT: normal } .longdesc-link
{ DISPLAY: none } .prompt { PADDING-BOTTOM: 0em; BACKGROUND-COLOR:
#ede7c8; PADDING-LEFT: 0.3em; = PADDING-RIGHT: 0.3em; PADDING-TOP:
0em } .screen .replaceable { COLOR: #444 } .screen { PADDING-BOTTOM:
0.5em; BACKGROUND-COLOR: #ede7c8; MARGIN: 0em; = PADDING-LEFT: 1em;
PADDING-RIGHT: 1em; COLOR: #333; PADDING-TOP: 0.5em } PRE { FONT-FAMILY:
verdana, helvetica, sans-serif; FONT-SIZE: 0.9em } CODE { FONT-FAMILY:
verdana, helvetica, sans-serif; FONT-SIZE: 0.9em } .guibutton { FONT-FAMILY:
verdana, helvetica, sans-serif; FONT-SIZE: 0.9em } .keycap { FONT-FAMILY:
verdana, helvetica, sans-serif; FONT-SIZE: 0.9em } .guilabel { FONT-FAMILY:
verdana, helvetica, sans-serif; FONT-SIZE: 0.9em } .guibutton { FONT-FAMILY:
"Lucida Grande", Geneva, Verdana, Arial, sans-serif; = WHITE-SPACE:
nowrap; COLOR: #444; FONT-WEIGHT: bold } .keycap { FONT-FAMILY:
"Lucida Grande", Geneva, Verdana, Arial, sans-serif; = WHITE-SPACE:
nowrap; COLOR: #444; FONT-WEIGHT: bold } .guilabel { FONT-FAMILY:
"Lucida Grande", Geneva, Verdana, Arial, sans-serif; = WHITE-SPACE:
nowrap; COLOR: #444; FONT-WEIGHT: bold } .guibutton { =09 } .guilabel
{ =09 } .keycap { =09 } .example { PADDING-BOTTOM: 5px; BACKGROUND-COLOR:
#c8c5ac; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; MARGIN-BOTTOM:
10px; PADDING-TOP: 5px } .command { FONT-WEIGHT: bold } .computeroutput
{ FONT-WEIGHT: bold } .filename { FONT-WEIGHT: bold } .citetitle
{ FONT-WEIGHT: bold } .replaceable { FONT-WEIGHT: bold } .option
{ FONT-WEIGHT: bold } .command .replaceable { COLOR: #555 } PRE
{ PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f9f3b0; PADDING-LEFT:
20px; = PADDING-RIGHT: 20px; DISPLAY: block; COLOR: #333; OVERFLOW:
auto; = PADDING-TOP: 10px } CODE { WHITE-SPACE: nowrap } DIV.note
{ BORDER-BOTTOM: #8a9195 1px solid; BORDER-LEFT: #8a9195 1px solid;
= PADDING-BOTTOM: 20px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; = MARGIN-BOTTOM:
1.5em; BACKGROUND: #b5bcbd no-repeat 10px 10px; COLOR: = #4c5253;
BORDER-TOP: #8a9195 1px solid; BORDER-RIGHT: #8a9195 1px solid; = PADDING-TOP:
1em } DIV.tip { BORDER-BOTTOM: #8a9195 1px solid; BORDER-LEFT:
#8a9195 1px solid; = PADDING-BOTTOM: 20px; PADDING-LEFT: 1em; PADDING-RIGHT:
1em; = MARGIN-BOTTOM: 1.5em; BACKGROUND: #7e917f no-repeat 10px 10px;
COLOR: = white; BORDER-TOP: #8a9195 1px solid; BORDER-RIGHT: #8a9195
1px solid; = PADDING-TOP: 1em } DIV.important { BORDER-BOTTOM:
#8a9195 1px solid; BORDER-LEFT: #8a9195 1px solid; = PADDING-BOTTOM:
20px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; = MARGIN-BOTTOM: 1.5em;
BACKGROUND: #4a5d75 no-repeat 10px 10px; COLOR: = white; BORDER-TOP:
#8a9195 1px solid; BORDER-RIGHT: #8a9195 1px solid; = PADDING-TOP:
1em } DIV.caution { BORDER-BOTTOM: #ab710a 1px solid; BORDER-LEFT:
#ab710a 1px solid; = PADDING-BOTTOM: 20px; PADDING-LEFT: 1em; PADDING-RIGHT:
1em; = MARGIN-BOTTOM: 1.5em; BACKGROUND: #e3a835 no-repeat 10px 10px;
COLOR: = #533500; BORDER-TOP: #ab710a 1px solid; BORDER-RIGHT: #ab710a
1px solid; = PADDING-TOP: 1em } DIV.warning { BORDER-BOTTOM:
#65504e 1px solid; BORDER-LEFT: #65504e 1px solid; = PADDING-BOTTOM:
20px; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; = MARGIN-BOTTOM: 1.5em;
BACKGROUND: #7b1e1e no-repeat 10px 10px; COLOR: = white; BORDER-TOP:
#65504e 1px solid; BORDER-RIGHT: #65504e 1px solid; = PADDING-TOP:
1em } DIV.note PRE { BORDER-BOTTOM: #e1e9eb 1px solid; BORDER-LEFT:
#e1e9eb 1px solid; = BACKGROUND-COLOR: #d6dee0; COLOR: #334558; BORDER-TOP:
#e1e9eb 1px = solid; BORDER-RIGHT: #e1e9eb 1px solid } DIV.tip
PRE { BORDER-BOTTOM: #e1e9eb 1px solid; BORDER-LEFT: #e1e9eb 1px
solid; = BACKGROUND-COLOR: #d5e1d5; COLOR: #334558; BORDER-TOP: #e1e9eb
1px = solid; BORDER-RIGHT: #e1e9eb 1px solid } DIV.important PRE
{ BORDER-BOTTOM: #e1e9eb 1px solid; BORDER-LEFT: #e1e9eb 1px solid;
= BACKGROUND-COLOR: #e1eef4; COLOR: #334558; BORDER-TOP: #e1e9eb
1px = solid; BORDER-RIGHT: #e1e9eb 1px solid } DIV.caution PRE
{ BORDER-BOTTOM: #e1e9eb 1px solid; BORDER-LEFT: #e1e9eb 1px solid;
= BACKGROUND-COLOR: #faf8ed; COLOR: #334558; BORDER-TOP: #e1e9eb
1px = solid; BORDER-RIGHT: #e1e9eb 1px solid } DIV.warning PRE
{ BORDER-BOTTOM: #e1e9eb 1px solid; BORDER-LEFT: #e1e9eb 1px solid;
= BACKGROUND-COLOR: #faf8ed; COLOR: #334558; BORDER-TOP: #e1e9eb
1px = solid; BORDER-RIGHT: #e1e9eb 1px solid } DIV.note { MARGIN-TOP:
0.5em } DIV.tip { MARGIN-TOP: 0.5em } DIV.important { MARGIN-TOP:
0.5em } DIV.caution { MARGIN-TOP: 0.5em } DIV.warning { MARGIN-TOP:
0.5em } DIV.note { BACKGROUND-IMAGE: url(../images/community/docbook/note.png) } DIV.tip
{ BACKGROUND-IMAGE: url(../images/community/docbook/tip.png) } DIV.important
{ BACKGROUND-IMAGE: url(../images/community/docbook/important.png) } DIV.caution
{ BACKGROUND-IMAGE: url(../images/community/docbook/caution.png) } DIV.warning
{ BACKGROUND-IMAGE: url(../images/community/docbook/warning.png) } DIV.note
.replaceable { COLOR: #e3dcc0 } DIV.tip .replaceable { COLOR:
#e3dcc0 } DIV.important .replaceable { COLOR: #e3dcc0 } DIV.caution
.replaceable { COLOR: #e3dcc0 } DIV.warning .replaceable { COLOR:
#e3dcc0 } PRE .replaceable { COLOR: #444 !important } TT .replaceable
{ COLOR: #444 !important } DIV.note H2 { HEIGHT: 32px; FONT-SIZE:
1.3em } DIV.tip H2 { HEIGHT: 32px; FONT-SIZE: 1.3em } DIV.important
H2 { HEIGHT: 32px; FONT-SIZE: 1.3em } DIV.caution H2 { HEIGHT:
32px; FONT-SIZE: 1.3em } DIV.warning H2 { HEIGHT: 32px; FONT-SIZE:
1.3em } DIV.note H2 { COLOR: #4c5253 } DIV.tip H2 { COLOR:
white } DIV.important H2 { COLOR: white } DIV.caution H2 { COLOR:
#533500 } DIV.warning H2 { COLOR: white } DIV.note .guilabel
{ COLOR: white !important } DIV.tip .guilabel { COLOR: white
!important } DIV.important .guilabel { COLOR: white !important } DIV.caution
.guilabel { COLOR: white !important } DIV.warning .guilabel { COLOR:
white !important } DIV.note LI { MARGIN: 0em; PADDING-LEFT: 10px } DIV.tip
LI { MARGIN: 0em; PADDING-LEFT: 10px } DIV.caution LI { MARGIN:
0em; PADDING-LEFT: 10px } DIV.warning LI { MARGIN: 0em; PADDING-LEFT:
10px } DIV.important LI { MARGIN: 0em; PADDING-LEFT: 10px } DIV.note
UL { MARGIN: 0em; PADDING-LEFT: 40px } DIV.tip UL { MARGIN:
0em; PADDING-LEFT: 40px } DIV.caution UL { MARGIN: 0em; PADDING-LEFT:
40px } DIV.warning UL { MARGIN: 0em; PADDING-LEFT: 40px } DIV.important
UL { MARGIN: 0em; PADDING-LEFT: 40px } DIV.note PRE PRE A:visited
{ COLOR: #0066cc !important } DIV.tip PRE PRE A:visited { COLOR:
#0066cc !important } DIV.important PRE PRE A:visited { COLOR:
#0066cc !important } DIV.caution PRE PRE A:visited { COLOR: #0066cc
!important } DIV.warning PRE PRE A:visited { COLOR: #0066cc !important } DIV.note
PRE A:link { COLOR: #0066cc !important } DIV.tip PRE A:link { COLOR:
#0066cc !important } DIV.important PRE A:link { COLOR: #0066cc
!important } DIV.caution PRE A:link { COLOR: #0066cc !important } DIV.warning
PRE A:link { COLOR: #0066cc !important } DIV.note A:visited { COLOR:
#f7f2d0 } DIV.tip A:visited { COLOR: #f7f2d0 } DIV.important
A:visited { COLOR: #f7f2d0 } DIV.warning A:visited { COLOR:
#f7f2d0 } DIV.note A:link { COLOR: #f7f2d0 } DIV.tip A:link
{ COLOR: #f7f2d0 } DIV.important A:link { COLOR: #f7f2d0 } DIV.warning
A:link { COLOR: #f7f2d0 } DIV.note A:visited { COLOR: #0066cc } DIV.note
A:link { COLOR: #0066cc } DIV.caution A:link { COLOR: #0066cc } DIV.caution
A:visited { COLOR: #0066cc } DIV.note H2 { PADDING-BOTTOM: 0em;
MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT: = 0em; PADDING-TOP:
0em } DIV.note P { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT:
56px; PADDING-RIGHT: = 0em; PADDING-TOP: 0em } DIV.tip H2 { PADDING-BOTTOM:
0em; MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT: = 0em; PADDING-TOP:
0em } DIV.tip P { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT:
56px; PADDING-RIGHT: = 0em; PADDING-TOP: 0em } DIV.caution H2 { PADDING-BOTTOM:
0em; MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT: = 0em; PADDING-TOP:
0em } DIV.caution P { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT:
56px; PADDING-RIGHT: = 0em; PADDING-TOP: 0em } DIV.warning H2 { PADDING-BOTTOM:
0em; MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT: = 0em; PADDING-TOP:
0em } DIV.warning P { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT:
56px; PADDING-RIGHT: = 0em; PADDING-TOP: 0em } DIV.important H2
{ PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT:
= 0em; PADDING-TOP: 0em } DIV.important P { PADDING-BOTTOM: 0em;
MARGIN: 0em; PADDING-LEFT: 56px; PADDING-RIGHT: = 0em; PADDING-TOP:
0em } #title { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT:
0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #title STRONG { DISPLAY:
none } #title A.site_href { WIDTH: 310px; DISPLAY: block; BACKGROUND:
= url(../images/community/jbossorglogo.png) no-repeat left top; FLOAT:
= left; HEIGHT: 89px } #title A.doc_href { DISPLAY: block; BACKGROUND:
url(../images/community/community_doc.png) = no-repeat right top;
HEIGHT: 89px } TABLE { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT:
#aaa 1px solid; WIDTH: = 100%; BORDER-COLLAPSE: collapse; BORDER-TOP:
#aaa 1px solid; = BORDER-RIGHT: #aaa 1px solid } TABLE TH { TEXT-ALIGN:
left; PADDING-BOTTOM: 0.3em; BACKGROUND-COLOR: #4a5d75; = PADDING-LEFT:
0.5em; PADDING-RIGHT: 0.5em; COLOR: white; PADDING-TOP: = 0.3em } TABLE
TD { PADDING-BOTTOM: 0.15em; PADDING-LEFT: 0.5em; PADDING-RIGHT:
0.5em; = PADDING-TOP: 0.15em } TABLE TR.even TD { BACKGROUND-COLOR:
#f5f5f5 } TABLE TH P:first-child { MARGIN-TOP: 0em; DISPLAY: inline;
PADDING-TOP: 0em } TABLE TD P:first-child { MARGIN-TOP: 0em; DISPLAY:
inline; PADDING-TOP: 0em } TABLE LI P:first-child { MARGIN-TOP:
0em; DISPLAY: inline; PADDING-TOP: 0em } TH { BORDER-BOTTOM-STYLE:
none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE:
none } TD { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none;
BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } TABLE TABLE
TD { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 0.6em; = BACKGROUND-COLOR:
white; PADDING-LEFT: 0em; PADDING-RIGHT: 0em; = PADDING-TOP: 0.6em } TABLE
TABLE { BORDER-BOTTOM: white 1px solid; BORDER-LEFT: white 1px solid;
= FONT-SIZE: 0.9em; BORDER-TOP: white 1px solid; BORDER-RIGHT: white
1px = solid } TD.remarkval { COLOR: #444; FONT-SIZE: 0.9em } .defaultval
{ FONT-SIZE: 0.8em } TD.typeval { FONT-SIZE: 0.8em } TD.fieldval
{ FONT-SIZE: 0.9em; FONT-WEIGHT: bold } TH.dbkey { FONT-SIZE:
0.9em } .lbname { BACKGROUND-COLOR: #999; WIDTH: 120px; COLOR:
white; FONT-SIZE: 0.9em; = FONT-WEIGHT: bold } .lbtype { BACKGROUND-COLOR:
#999; WIDTH: 120px; COLOR: white; FONT-SIZE: 0.9em; = FONT-WEIGHT:
bold } .lbdescr { BACKGROUND-COLOR: #999; WIDTH: 120px; COLOR:
white; FONT-SIZE: 0.9em; = FONT-WEIGHT: bold } .lbdriver { BACKGROUND-COLOR:
#999; WIDTH: 120px; COLOR: white; FONT-SIZE: 0.9em; = FONT-WEIGHT:
bold } .lbhost { BACKGROUND-COLOR: #999; WIDTH: 120px; COLOR:
white; FONT-SIZE: 0.9em; = FONT-WEIGHT: bold } TD.remarkval { WIDTH:
230px } TD.tname { FONT-SIZE: 1.1em; FONT-WEIGHT: bold } H5
{ FONT-SIZE: 9pt } H6 { FONT-SIZE: 10pt } TH.dbfield { WIDTH:
120px } TH.dbtype { WIDTH: 70px } TH.dbdefault { WIDTH: 70px } TH.dbnul
{ WIDTH: 70px } TH.dbkey { WIDTH: 70px } SPAN.book { MARGIN-TOP:
4em; DISPLAY: block } SPAN.chapter { MARGIN-TOP: 0.5em; DISPLAY:
block } #breadcrumbs UL LI.first:before { CONTENT: " " } #breadcrumbs
{ PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = MARGIN-BOTTOM:
25px; COLOR: #900; PADDING-TOP: 3px } #breadcrumbs UL { BORDER-BOTTOM:
medium none; BORDER-LEFT: medium none; PADDING-LEFT: = 0px; DISPLAY:
inline; MARGIN-LEFT: 0px; BORDER-TOP: medium none; = BORDER-RIGHT:
medium none } #breadcrumbs UL LI { BORDER-BOTTOM: medium none;
BORDER-LEFT: medium none; LIST-STYLE-TYPE: = none; PADDING-LEFT:
2px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: = medium none;
LIST-STYLE-IMAGE: none; BORDER-RIGHT: medium none } #breadcrumbs
UL LI:before { COLOR: #333; CONTENT: "\0020 \0020 \0020 \00BB \0020" } .alpha1
{ BACKGROUND: url(../images/community/watermark-alpha1.png) white
left = top } .alpha2 { BACKGROUND: url(../images/community/watermark-alpha2.png)
white left = top } .beta1 { BACKGROUND: url(../images/community/watermark-beta1.png)
white left top } .beta2 { BACKGROUND: url(../images/community/watermark-beta2.png)
white left top } .pre-release-candidate { BACKGROUND: = url(../images/community/watermark-pre-release-candidate.png)
white left = top } .release-candidate { BACKGROUND: url(../images/community/watermark-release-candidate.png)
= white left top } .glossary H3 { MARGIN: 0em; COLOR: #aaa; FONT-SIZE:
2em } .index H3 { MARGIN: 0em; COLOR: #aaa; FONT-SIZE: 2em } .indexdiv
{ MARGIN-BOTTOM: 1em } .glossary DT { COLOR: #444; FONT-SIZE:
0.9em; PADDING-TOP: 0.5em } .index DT { COLOR: #444; FONT-SIZE:
0.9em; PADDING-TOP: 0.5em } .glossary DL DL DT { LINE-HEIGHT:
1.2em; COLOR: #777; FONT-SIZE: 0.85em; FONT-WEIGHT: = normal; PADDING-TOP:
0em } .index DL DL DT { LINE-HEIGHT: 1.2em; COLOR: #777; FONT-SIZE:
0.85em; FONT-WEIGHT: = normal; PADDING-TOP: 0em } .index DL DL
DT:before { COLOR: #ccc; CONTENT: "- " } .footnotes { =09 } .footnote
{ PADDING-BOTTOM: 0.2em; BACKGROUND-COLOR: #c8c5ac; MARGIN: 0em
0em = 0.5em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; COLOR: #222;
FONT-SIZE: = 0.9em; PADDING-TOP: 0.2em } TABLE .footnote { MARGIN:
1em 0.5em } SUP { PADDING-BOTTOM: 0em; PADDING-LEFT: 0em; PADDING-RIGHT:
0.3em; = PADDING-TOP: 0em } .footnote { POSITION: relative } .footnote
SUP { POSITION: absolute; COLOR: #e3dcc0; FONT-SIZE: 1.8em; LEFT:
0.4em } .footnote SUP A:link { COLOR: #92917d; TEXT-DECORATION:
none } .footnote SUP A:visited { COLOR: #92917d; TEXT-DECORATION:
none } .footnote:hover SUP A { COLOR: #fff; TEXT-DECORATION: none } .footnote
P { PADDING-LEFT: 5em } .footnote A:link { COLOR: #00537c } .footnote
A:visited { COLOR: #00537c } .footnote A:hover { COLOR: white } LI
P:first-child { PADDING-BOTTOM: 0em !important; MARGIN: 0em; PADDING-LEFT:
0em = !important; PADDING-RIGHT: 0em !important; PADDING-TOP: 0em
!important } DIV.chapter { PADDING-TOP: 2em } DIV.section { PADDING-TOP:
2em } .revhistory { =09 } PRE .replaceable { COLOR: white } PRE
.keycap { COLOR: white } PRE { BORDER-BOTTOM: #cccccc 1px solid;
BORDER-LEFT: #cccccc 1px solid; = PADDING-BOTTOM: 5px; BACKGROUND-COLOR:
#f5f5f5; PADDING-LEFT: 25px; = PADDING-RIGHT: 15px; FONT-FAMILY:
verdana, helvetica, sans-serif; = BORDER-TOP: #cccccc 1px solid;
BORDER-RIGHT: #cccccc 1px solid; = PADDING-TOP: 5px } DIV.note
.replaceable { COLOR: white } DIV.tip .replaceable { COLOR:
white } DIV.important .replaceable { COLOR: white } DIV.caution
.replaceable { COLOR: white } DIV.warning .replaceable { COLOR:
white } DIV.note .keycap { COLOR: white } DIV.tip .keycap { COLOR:
white } DIV.important .keycap { COLOR: white } DIV.caution .keycap
{ COLOR: white } DIV.warning .keycap { COLOR: white } DIV.abstract
{ FONT-SIZE: larger } .authorgroup { =09 } .authorgroup H4
{ PADDING-BOTTOM: 0em; MARGIN: 1em 0em 0em; PADDING-LEFT: 0em; = PADDING-RIGHT:
0em; PADDING-TOP: 0em } .author { DISPLAY: block } .editor { DISPLAY:
block } .translator { DISPLAY: block } .othercredit { DISPLAY:
block } .authorgroup DIV { MARGIN-BOTTOM: 15px; MARGIN-LEFT: 10px;
MARGIN-RIGHT: 10px } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/docnav.css .docnav
A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .docnav STRONG
{ FONT-WEIGHT: normal; TEXT-DECORATION: none } .docnav { POSITION:
relative; PADDING-BOTTOM: 2em; LIST-STYLE-TYPE: none; MARGIN: = 0em;
PADDING-LEFT: 0em; WIDTH: 100%; PADDING-RIGHT: 0em; BORDER-TOP: = #ccc
1px dotted; LIST-STYLE-IMAGE: none; PADDING-TOP: 1em } .docnav LI
{ PADDING-BOTTOM: 0em; LIST-STYLE-TYPE: none; MARGIN: 0em; PADDING-LEFT:
= 0em; PADDING-RIGHT: 0em; DISPLAY: inline; FONT-SIZE: 0.8em; = LIST-STYLE-IMAGE:
none; PADDING-TOP: 0em } .docnav LI:before { CONTENT: " " } .docnav
LI.previous { POSITION: absolute; TOP: 1em } .docnav LI.next { POSITION:
absolute; TOP: 1em } .docnav LI.up { MARGIN: 0em 1.5em } .docnav
LI.home { MARGIN: 0em 1.5em } .docnav LI.previous { TEXT-ALIGN:
left; LEFT: 0px } .docnav LI.next { TEXT-ALIGN: right; RIGHT:
0px } .docnav LI.previous STRONG { DISPLAY: block; HEIGHT: 22px } .docnav
LI.next STRONG { DISPLAY: block; HEIGHT: 22px } .docnav { TEXT-ALIGN:
center; MARGIN: 0px auto } .docnav LI.next A STRONG { PADDING-BOTTOM:
15px; PADDING-RIGHT: 60px; BACKGROUND: = url(../images/community/docbook/next.png)
no-repeat right top; HEIGHT: = 40px; FONT-SIZE: 1.2em; PADDING-TOP:
10px } .docnav LI.previous A STRONG { PADDING-BOTTOM: 15px; PADDING-LEFT:
60px; BACKGROUND: = url(../images/community/docbook/prev.png) no-repeat
left top; HEIGHT: = 40px; FONT-SIZE: 1.2em; PADDING-TOP: 10px } .docnav
LI.home A STRONG { PADDING-BOTTOM: 15px; PADDING-LEFT: 60px; BACKGROUND:
= url(../images/community/docbook/home.png) no-repeat left top; HEIGHT:
= 40px; FONT-SIZE: 1.2em; PADDING-TOP: 10px } .docnav LI.up A STRONG
{ PADDING-BOTTOM: 15px; PADDING-LEFT: 60px; BACKGROUND: = url(../images/community/docbook/up.png)
no-repeat left top; HEIGHT: = 40px; FONT-SIZE: 1.2em; PADDING-TOP:
10px } .docnav A:link { COLOR: #666 !important } .docnav A:visited
{ COLOR: #666 !important } .docnav A:hover { COLOR: black !important } .docnav
A:focus { COLOR: black !important } .docnav A:active { COLOR:
black !important } .docnav A { MAX-WIDTH: 10em; OVERFLOW: hidden } .docnav
A:link STRONG { TEXT-DECORATION: none } .docnav { TEXT-ALIGN:
center; MARGIN: 0px auto } .docnav { MARGIN-BOTTOM: 16px } .navheader
{ PADDING-TOP: 35px } .navheader TABLE { BORDER-BOTTOM-STYLE:
none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE:
none } .navheader A { FONT-SIZE: 0.8em; FONT-WEIGHT: normal; TEXT-DECORATION:
none } .navheader TD.next A { PADDING-BOTTOM: 15px; PADDING-RIGHT:
60px; BACKGROUND: = url(../images/community/docbook/next.png) no-repeat
right top; HEIGHT: = 40px; FONT-SIZE: 0.9em; PADDING-TOP: 10px } .navheader
TD.previous A { PADDING-BOTTOM: 15px; PADDING-LEFT: 60px; BACKGROUND:
= url(../images/community/docbook/prev.png) no-repeat left top; HEIGHT:
= 40px; FONT-SIZE: 0.9em; PADDING-TOP: 10px } .navheader A:link
{ COLOR: #666 !important } .navheader A:visited { COLOR: #666
!important } .navheader A:hover { COLOR: black !important } .navheader
A:focus { COLOR: black !important } .navheader A:active { COLOR:
black !important } .navheader A { MAX-WIDTH: 10em; OVERFLOW: hidden } .navheader
A:link { TEXT-DECORATION: none } .navfooter TABLE { BORDER-BOTTOM-STYLE:
none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE:
none } .navfooter A { FONT-SIZE: 0.8em; FONT-WEIGHT: normal; TEXT-DECORATION:
none } .navfooter TD.next A { PADDING-BOTTOM: 15px; PADDING-RIGHT:
60px; BACKGROUND: = url(../images/community/docbook/next.png) no-repeat
right top; HEIGHT: = 40px; FONT-SIZE: 0.9em; PADDING-TOP: 10px } .navfooter
TD.previous A { PADDING-BOTTOM: 15px; PADDING-LEFT: 60px; BACKGROUND:
= url(../images/community/docbook/prev.png) no-repeat left top; HEIGHT:
= 40px; FONT-SIZE: 0.9em; PADDING-TOP: 10px } .navfooter TD.home
A { PADDING-BOTTOM: 15px; PADDING-LEFT: 60px; BACKGROUND: = url(../images/community/docbook/home.png)
no-repeat left top; HEIGHT: = 40px; FONT-SIZE: 0.9em; PADDING-TOP:
10px } .navfooter TD.up A { PADDING-BOTTOM: 15px; PADDING-LEFT:
60px; BACKGROUND: = url(../images/community/docbook/up.png) no-repeat
left top; HEIGHT: = 40px; FONT-SIZE: 0.9em; PADDING-TOP: 10px } .navfooter
A:link { COLOR: #666 !important } .navfooter A:visited { COLOR:
#666 !important } .navfooter A:hover { COLOR: black !important } .navfooter
A:focus { COLOR: black !important } .navfooter A:active { COLOR:
black !important } .navfooter A { MAX-WIDTH: 10em; OVERFLOW: hidden } .navfooter
A:link { TEXT-DECORATION: none } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/reports.css .reports
UL.locale { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } .reports
UL { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT: 0em; PADDING-RIGHT:
= 0em; PADDING-TOP: 0em } .reports UL.locale LI { BORDER-BOTTOM:
#eee 1px solid; BORDER-LEFT: #eee 1px solid; = PADDING-RIGHT: 2em;
DISPLAY: block; MARGIN-BOTTOM: 1em; FLOAT: left; = COLOR: #000; FONT-SIZE:
small; BORDER-TOP: #eee 1px solid; MARGIN-RIGHT: = 1em; BORDER-RIGHT:
#eee 1px solid } .reports UL.locale LI A { PADDING-BOTTOM: 0.5em;
DISPLAY: block; FONT-SIZE: 1.2em; PADDING-TOP: = 0.1em } .reports
UL.locale STRONG { PADDING-BOTTOM: 0em; MARGIN: 0em 0em -2.2em;
PADDING-LEFT: 0em; = PADDING-RIGHT: 0em; DISPLAY: block; PADDING-TOP:
0em } .reports UL.locale SPAN.value { POSITION: relative; TEXT-ALIGN:
right; DISPLAY: block; COLOR: #444; = FONT-SIZE: 1em; MARGIN-RIGHT:
-1.5em } .reports UL.locale LI { MARGIN: 0em; WIDTH: 12em; DISPLAY:
block; FLOAT: left; CLEAR: none } .reports UL.locale LI DIV.progress
{ POSITION: relative; WIDTH: 13.2em; MARGIN-BOTTOM: 0em; FONT-SIZE:
1em; = TOP: 0em; LEFT: 0em } .reports H2 { MARGIN: 0em; FONT-SIZE:
1em } .reports LI { =09 } .reports LI:hover { BORDER-BOTTOM-COLOR:
#444 !important; BACKGROUND-COLOR: #666; = BORDER-TOP-COLOR: #444
!important; COLOR: white !important; = BORDER-RIGHT-COLOR: #444 !important;
BORDER-LEFT-COLOR: #444 !important } .reports LI:hover STRONG { COLOR:
white } .reports LI:hover H2 { COLOR: white } .reports LI:hover
A { COLOR: white } .reports LI:hover SPAN.value { COLOR: white } BODY.results
{ PADDING-BOTTOM: 0em !important; PADDING-LEFT: 0em !important;
= PADDING-RIGHT: 0em !important; MAX-WIDTH: 57em !important; PADDING-TOP:
= 0em !important } BODY.reports { PADDING-BOTTOM: 0em !important;
PADDING-LEFT: 0em !important; = PADDING-RIGHT: 0em !important; MAX-WIDTH:
57em !important; PADDING-TOP: = 0em !important } DIV.progress { WIDTH:
16em; DISPLAY: block; BACKGROUND: = url(../images/community/shine.png)
#c00 repeat-x left top; FLOAT: left; = HEIGHT: 1em } DIV.progress
SPAN { FLOAT: left; HEIGHT: 1em } DIV.progress SPAN.translated
{ BACKGROUND: url(../images/community/shine.png) #6c3 repeat-x left
top } DIV.progress SPAN.fuzzy { BACKGROUND: url(../images/community/shine.png)
#ff9f00 repeat-x left = top } .results UL.locale { PADDING-BOTTOM:
0em; LIST-STYLE-TYPE: none; MARGIN: 0em; PADDING-LEFT: = 0em; PADDING-RIGHT:
0em; LIST-STYLE-IMAGE: none; PADDING-TOP: 0em } .results .pofile
{ PADDING-BOTTOM: 0em !important; MARGIN: 0em; PADDING-LEFT: 0em
= !important; PADDING-RIGHT: 0em !important; PADDING-TOP: 0em !important } .results
UL.locale LI { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT: 32px;
PADDING-RIGHT: = 0em; BORDER-TOP: #eee 1px solid; PADDING-TOP: 0em } .results
UL.locale .pofile { PADDING-BOTTOM: 0em; MARGIN: 0em; PADDING-LEFT:
0em; WIDTH: 100%; = PADDING-RIGHT: 0em; DISPLAY: block; COLOR: #444;
FONT-SIZE: 1.2em; = PADDING-TOP: 0em } .results SPAN.value { COLOR:
#888 } .results STRONG { FONT-WEIGHT: normal } .results .home
A { PADDING-BOTTOM: 5px; MARGIN: 0px auto; PADDING-LEFT: 28px; WIDTH:
5em; = PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: = url(../images/community/docbook/home.png)
no-repeat left top; FONT-SIZE: = 1.2em; PADDING-TOP: 5px } .results
UL.locale LI:hover { BACKGROUND-COLOR: #666 !important; COLOR: white } .results
UL.locale LI:hover SPAN.pofile { BACKGROUND-COLOR: #666 !important;
COLOR: white } .results UL.locale LI:hover STRONG { BACKGROUND-COLOR:
#666 !important; COLOR: white } .results UL.locale LI:hover SPAN.value
{ BACKGROUND-COLOR: #666 !important; COLOR: white } UL.locale
{ LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL.locale LI.total
{ WIDTH: 31em; DISPLAY: block; FLOAT: left; COLOR: #777; CLEAR:
none = !important; FONT-SIZE: small; MARGIN-RIGHT: 2em } UL.locale
LI { DISPLAY: block; COLOR: #777; CLEAR: both; FONT-SIZE: small } UL.locale
STRONG { COLOR: #888; FONT-SIZE: 0.7em; FONT-WEIGHT: normal } SPAN.value
{ COLOR: #888; FONT-SIZE: 0.7em; FONT-WEIGHT: normal } UL.locale
LI A { DISPLAY: block; FONT-SIZE: 1.2em; PADDING-TOP: 0.2em } UL.locale
LI.total DIV.progress { POSITION: relative; MARGIN-BOTTOM: 0em;
TOP: 0em; LEFT: 0em } UL.locale LI { WIDTH: 100% } UL.locale
LI DIV.progress { POSITION: relative; MARGIN: 0em 0em -3em; FLOAT:
left; TOP: -2em; LEFT: = 30.5em } LI.total { PADDING-BOTTOM:
0em !important; PADDING-LEFT: 0em !important; = PADDING-RIGHT: 0em
!important; PADDING-TOP: 0em !important } LI.total { PADDING-BOTTOM:
0.5em; BACKGROUND-COLOR: #f7f2d0; MARGIN: 0px auto 1em; = MIN-HEIGHT:
9.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; MAX-WIDTH: = 16em;
FLOAT: right; COLOR: #ccc !important; FONT-SIZE: 1.3em !important;
= PADDING-TOP: 0.5em } LI.total .value { COLOR: #444; FONT-SIZE:
0.8em } LI.total STRONG { DISPLAY: block; COLOR: black; FONT-WEIGHT:
bold } LI.total SPAN.value { POSITION: relative; TEXT-ALIGN: right;
DISPLAY: block; TOP: -1.25em } .pofile { POSITION: relative } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/extensions.css PRE
{ -moz-border-radius: 11px } .example { -moz-border-radius:
15px } DIV.note { -moz-border-radius: 11px } DIV.tip { -moz-border-radius:
11px } DIV.important { -moz-border-radius: 11px } DIV.caution
{ -moz-border-radius: 11px } DIV.warning { -moz-border-radius:
11px } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/codehighlight.css SPAN.property
{ COLOR: #0066cc } PRE.JAVA { LINE-HEIGHT: 10px } PRE.XML
{ LINE-HEIGHT: 8px } PRE.JSP { LINE-HEIGHT: 8px } PRE.XHTML
{ LINE-HEIGHT: 8px } .java_type { COLOR: #000000 } .java_keyword
{ COLOR: #7f1b55; FONT-WEIGHT: bold } .java_javadoc_comment { BACKGROUND-COLOR:
rgb(247,247,247); FONT-STYLE: italic; COLOR: #3f5fbf } .java_comment
{ BACKGROUND-COLOR: rgb(247,247,247); COLOR: #3f7f5f } .java_operator
{ COLOR: #000000 } .java_plain { COLOR: rgb(0,0,0) } .java_literal
{ COLOR: #2a00ff } PRE CODE { FONT-FAMILY: monospace; WHITE-SPACE:
nowrap; COLOR: rgb(0,0,0); = FONT-SIZE: 12px } .java_javadoc_tag
{ BACKGROUND-COLOR: rgb(247,247,247); FONT-STYLE: italic; COLOR:
#7f9fbf; = FONT-WEIGHT: bold } .java_separator { COLOR: #000000 } .xml_plain
{ COLOR: rgb(0,0,0) } .xml_tag_name { COLOR: #3f7f7f } .xml_comment
{ BACKGROUND-COLOR: rgb(247,247,247); COLOR: #3f5fbf } .xml_tag_symbols
{ COLOR: #008080 } .xml_rife_tag { BACKGROUND-COLOR: rgb(228,230,160);
COLOR: rgb(0,0,0) } .xml_attribute_value { COLOR: #2a00ff } .xml_attribute_name
{ COLOR: #7f007f; FONT-WEIGHT: bold } .xml_char_data { COLOR:
rgb(0,0,0) } .xml_rife_name { BACKGROUND-COLOR: rgb(228,230,160);
COLOR: #008cca } .xml_processing_instruction { FONT-STYLE: italic;
COLOR: rgb(0,0,0); FONT-WEIGHT: bold } TD.java { LINE-HEIGHT:
10px; VERTICAL-ALIGN: top } TD.java-ln { LINE-HEIGHT: 10px; VERTICAL-ALIGN:
top } TT.java { LINE-HEIGHT: 10px; FONT-FAMILY: verdana, helvetica,
sans-serif; = MARGIN-BOTTOM: 0em } TT.java-ln { LINE-HEIGHT:
10px; MARGIN-BOTTOM: 0em } PRE.java { LINE-HEIGHT: 10px; MARGIN-BOTTOM:
0em } PRE.java-ln { LINE-HEIGHT: 10px; MARGIN-BOTTOM: 0em } TD.java-ln
{ TEXT-ALIGN: right; LINE-HEIGHT: 10px } TT.java-ln { LINE-HEIGHT:
10px; COLOR: #888888 } PRE.java-ln { LINE-HEIGHT: 10px; COLOR:
#888888 } SPAN.java0 { LINE-HEIGHT: 10px; COLOR: #ffffff; FONT-SIZE:
8pt } SPAN.java1 { COLOR: #808080; FONT-SIZE: 8pt } SPAN.java2
{ LINE-HEIGHT: 10px; COLOR: #3f7f5f; FONT-SIZE: 8pt } SPAN.java3
{ LINE-HEIGHT: 10px; COLOR: #3f7f5f; FONT-SIZE: 8pt } SPAN.java4
{ LINE-HEIGHT: 10px; COLOR: #7f1b55; FONT-SIZE: 8pt; FONT-WEIGHT:
bold } SPAN.java5 { LINE-HEIGHT: 10px; COLOR: #2a00ff; FONT-SIZE:
8pt } SPAN.java6 { LINE-HEIGHT: 10px; COLOR: #990000; FONT-SIZE:
8pt } SPAN.java7 { LINE-HEIGHT: 10px; COLOR: #990000; FONT-SIZE:
8pt } SPAN.java8 { LINE-HEIGHT: 10px; COLOR: #000000; FONT-SIZE:
8pt } SPAN.java9 { LINE-HEIGHT: 10px; COLOR: #7f0055; FONT-SIZE:
8pt; FONT-WEIGHT: bold } SPAN.java10 { LINE-HEIGHT: 10px; COLOR:
#000000; FONT-SIZE: 8pt } SPAN.java11 { LINE-HEIGHT: 10px; COLOR:
#7f9fbf; FONT-SIZE: 8pt } SPAN.java12 { LINE-HEIGHT: 10px; COLOR:
#7f7f9f; FONT-SIZE: 8pt } SPAN.java13 { LINE-HEIGHT: 10px; COLOR:
#3f3fbf; FONT-SIZE: 8pt } SPAN.java14 { LINE-HEIGHT: 10px; COLOR:
#3f5fbf; FONT-SIZE: 8pt } SPAN.java15 { LINE-HEIGHT: 10px; COLOR:
#7f0055; FONT-SIZE: 8pt } SPAN.java16 { LINE-HEIGHT: 10px; COLOR:
#646464; FONT-SIZE: 8pt } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/jbossorg.css @import
url( documentation.css ); @import url( docnav.css ); @import url(
reports.css ); @import url( extensions.css ); @import url( codehighlight.css
); BODY { BACKGROUND-IMAGE: url(../images/community/bkg_gradient.gif);
= TEXT-ALIGN: justify; PADDING-BOTTOM: 0em; LINE-HEIGHT: 150%; MARGIN:
0px = auto; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND-REPEAT:
= repeat-x; FONT-FAMILY: "Lucida Grande", Geneva, Verdana, Arial,
= sans-serif; MAX-WIDTH: 55em; COLOR: #333; FONT-SIZE: 12px; PADDING-TOP:
= 0em } A:link { COLOR: #0066cc } A:visited { COLOR: #6699cc } DIV.longdesc-link
{ FLOAT: right; COLOR: #999 } H1 { LINE-HEIGHT: 130%; BACKGROUND-COLOR:
transparent; MARGIN-TOP: 0em; = FONT-FAMILY: "Lucida Grande", Geneva,
Verdana, Arial, sans-serif; COLOR: = #4a5d75 } H2 { LINE-HEIGHT:
130%; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0em; = FONT-FAMILY:
"Lucida Grande", Geneva, Verdana, Arial, sans-serif; COLOR: = #4a5d75 } H3
{ LINE-HEIGHT: 130%; BACKGROUND-COLOR: transparent; MARGIN-TOP:
0em; = FONT-FAMILY: "Lucida Grande", Geneva, Verdana, Arial, sans-serif;
COLOR: = #4a5d75 } H4 { LINE-HEIGHT: 130%; BACKGROUND-COLOR:
transparent; MARGIN-TOP: 0em; = FONT-FAMILY: "Lucida Grande", Geneva,
Verdana, Arial, sans-serif; COLOR: = #4a5d75 } H5 { LINE-HEIGHT:
130%; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0em; = FONT-FAMILY:
"Lucida Grande", Geneva, Verdana, Arial, sans-serif; COLOR: = #4a5d75 } H6
{ LINE-HEIGHT: 130%; BACKGROUND-COLOR: transparent; MARGIN-TOP:
0em; = FONT-FAMILY: "Lucida Grande", Geneva, Verdana, Arial, sans-serif;
COLOR: = #4a5d75 } H1 { BACKGROUND-IMAGE: url(../images/community/title_hdr.png);
= PADDING-BOTTOM: 1.5em; LINE-HEIGHT: 1.2em; PADDING-LEFT: 1.5em;
= PADDING-RIGHT: 1.5em; BACKGROUND-REPEAT: no-repeat; COLOR: #182737;
= FONT-SIZE: 2em; BORDER-TOP: #cccccc 1px dotted; PADDING-TOP: 1.5em } H2
{ FONT-SIZE: 1.6em } H3 { PADDING-BOTTOM: 0em; FONT-SIZE: 1.3em;
PADDING-TOP: 0em } H4 { PADDING-BOTTOM: 0em; FONT-SIZE: 1.1em;
PADDING-TOP: 0em } H5.formalpara { MARGIN-TOP: 2em; MARGIN-BOTTOM:
0.8em; FONT-SIZE: 1em } HR { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE:
none; WIDTH: 100% = !important; BORDER-COLLAPSE: collapse; BORDER-LEFT-STYLE:
none; = BORDER-TOP: #ccc 1px dotted } SUP { COLOR: #999 } ------=_NextPart_000_005E_01CD254D.4A12ADA0 Content-Type:
text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/css/hibernate.css @import
url( jbossorg.css ); BODY { BACKGROUND-IMAGE: url(../images/org/hibernate/bkg_gradient.png);
= FONT-FAMILY: "Lucida Grande", Geneva, Verdana, Arial, sans-serif } A
{ TEXT-DECORATION: none } H1 { BACKGROUND-IMAGE: url(../images/org/hibernate/title_hdr.png);
COLOR: = #182737 } H2 { COLOR: #4a5d75 } H3 { COLOR: #4a5d75 } H4
{ COLOR: #4a5d75 } H5 { COLOR: #4a5d75 } H6 { COLOR: #4a5d75 } #title
A.site_href { WIDTH: 362px; DISPLAY: block; BACKGROUND: = url(../images/org/hibernate/hibernatelogo.png)
no-repeat left top; = FLOAT: left; HEIGHT: 100px } #title A.doc_href
{ DISPLAY: block; BACKGROUND: = url(../images/org/hibernate/community_doc.png)
no-repeat right top; = HEIGHT: 100px } .releaseinfo { COLOR:
#4a5d75; FONT-SIZE: 150% } DIV.note { BACKGROUND-COLOR: #849092;
COLOR: white } DIV.note H2 { COLOR: white } DIV.note A:visited
{ COLOR: #f7f2d0 } DIV.tip A:visited { COLOR: #f7f2d0 } DIV.important
A:visited { COLOR: #f7f2d0 } DIV.caution A:visited { COLOR:
#f7f2d0 } DIV.warning A:visited { COLOR: #f7f2d0 } DIV.note
A:link { COLOR: #f7f2d0 } DIV.tip A:link { COLOR: #f7f2d0 } DIV.important
A:link { COLOR: #f7f2d0 } DIV.caution A:link { COLOR: #f7f2d0 } DIV.warning
A:link { COLOR: #f7f2d0 } .docnav LI.next A STRONG { BACKGROUND-IMAGE:
url(../images/org/hibernate/docbook/next.png) } .docnav LI.previous
A STRONG { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/prev.png) } .docnav
LI.home A STRONG { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/home.png) } .docnav
LI.up A STRONG { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/up.png) } .navheader
TD.next A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/next.png) } .navheader
TD.previous A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/prev.png) } .navfooter
TD.next A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/next.png) } .navfooter
TD.previous A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/prev.png) } .navfooter
TD.home A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/home.png) } .navfooter
TD.up A { BACKGROUND-IMAGE: url(../images/org/hibernate/docbook/up.png) } ------=_NextPart_000_005E_01CD254D.4A12ADA0--