In the previous section, we saw that a UniqueConstraint
uses an array of column names. Field mappings,
however, use full-fledged Column
annotations.
Column annotations have the following properties:
String columnDefinition
: The
database-specific column type name. This property is only used
by vendors that support creating tables from your mapping
metadata. During table creation, the vendor will use the value
of the columnDefinition
as the declared
column type. If no columnDefinition
is
given, the vendor will choose an appropriate default based on
the field type combined with the column's length, precision,
and scale.
int length
: The column length. This
property is typically only used during table creation, though
some vendors might use it to validate data before flushing.
CHAR
and VARCHAR
columns typically default to a length of 255; other
column types use the database default.
int precision
: The precision of a numeric
column. This property is often used in
conjunction with scale
to form the
proper column type name during table creation.
int scale
: The number of decimal digits a
numeric column can hold. This property is often used in
conjunction with precision
to form the
proper column type name during table creation.
boolean nullable
: Whether the column can
store null values. Vendors may use this property both for table
creation and at runtime; however, it is never required.
Defaults to true
.
boolean insertable
: By setting this property
to false
, you can omit the column from
SQL INSERT
statements.
Defaults to true
.
boolean updatable
: By setting this property
to false
, you can omit the column from
SQL UPDATE
statements.
Defaults to true
.
String table
: Sometimes you will
need to map fields to tables other than the primary table.
This property allows you specify that the column resides in a
secondary table. We will see how to map fields to secondary
tables later in the chapter.
The equivalent XML element is column
. This
element has attributes that are exactly equivalent to the
Column
annotation's properties described above:
name
column-definition
length
precision
scale
insertable
updatable
table