The
optional <generator> child element
names a Java class used to generate unique
identifiers for instances of the persistent
class. If any parameters are required
to configure or initialize the generator
instance, they are passed using the <param>
element.
| <id
name="id" type="long"
column="cat_id"> |
| |
<generator class="org.hibernate.id.TableHiLoGenerator">
|
| |
|
<param
name="table">uid_table</param>
<param name="column">next_hi_value_column</param> |
| |
</generator> |
| </id> |
All
generators implement the interface org.hibernate.id.IdentifierGenerator.
This is a very simple interface; some applications
may choose to provide their own specialized
implementations. However, Hibernate provides
a range of built-in implementations. There
are shortcut names for the built-in generators:
| increment
|
generates
identifiers of type long, short or
int that are unique 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 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 Interbase.
The returned identifier is of type
long, short or int |
| hilo
|
uses
a hi/lo algorithm to efficiently generate
identifiers of type long, short or
int, given a table and column (by
default hibernate_unique_key and next_hi
respectively) as a source of hi values.
The hi/lo algorithm generates identifiers
that are unique only for a 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, unique
within a network (the IP address is
used). The UUID is encoded as a string
of hexadecimal digits of length 32.
|
| guid
|
uses
a database-generated GUID string on
MS SQL Server and MySQL. |
| native
|
picks
identity, sequence or hilo depending
upon the capabilities of the underlying
database. |
| assigned
|
lets
the application to assign an identifier
to the object before save() is called.
This is the default strategy if no
<generator> element is specified.
|
| select
|
retrieves
a primary key assigned by a database
trigger by selecting the row by some
unique key and retrieving the primary
key value |
| foreign
|
uses
the identifier of another associated
object. Usually used in conjunction
with a <one-to-one> primary
key association. |
|