javax.persistence

## Annotation Type Column

    @Target(value={METHOD,FIELD})
     @Retention(value=RUNTIME)
    public @interface Column

Specifies the mapped column for a persistent property or field. If no `Column` annotation is specified, the default values apply.

>         Example 1:

>         @Column(name="DESC", nullable=false, length=512)
>         public String getDescription() { return description; }

>         Example 2:

>         @Column(name="DESC",
>                 columnDefinition="CLOB NOT NULL",
>                 table="EMP_DETAIL")
>         @Lob
>         public String getDescription() { return description; }

>         Example 3:

>         @Column(name="ORDER_COST", updatable=false, precision=12, scale=2)
>         public BigDecimal getCost() { return cost; }

Since:
  Java Persistence 1.0

### Optional Element Summary

Optional Elements
`java.lang.String` `columnDefinition` (Optional) The SQL fragment that is used when generating the DDL for the column.
`boolean` `insertable` (Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider.
`int` `length` (Optional) The column length.
`java.lang.String` `name` (Optional) The name of the column.
`boolean` `nullable` (Optional) Whether the database column is nullable.
`int` `precision` (Optional) The precision for a decimal (exact numeric) column.
`int` `scale` (Optional) The scale for a decimal (exact numeric) column.
`java.lang.String` `table` (Optional) The name of the table that contains the column.
`boolean` `unique` (Optional) Whether the column is a unique key.
`boolean` `updatable` (Optional) Whether the column is included in SQL UPDATE statements generated by the persistence provider.

### Element Detail

#### name

    public abstract java.lang.String name

(Optional) The name of the column. Defaults to the property or field name.

Default:
  ""

#### unique

    public abstract boolean unique

(Optional) Whether the column is a unique key. This is a shortcut for the `UniqueConstraint` annotation at the table level and is useful for when the unique key constraint corresponds to only a single column. This constraint applies in addition to any constraint entailed by primary key mapping and to constraints specified at the table level.

Default:
  false

#### nullable

    public abstract boolean nullable

(Optional) Whether the database column is nullable.

Default:
  true

#### insertable

    public abstract boolean insertable

(Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider.

Default:
  true

#### updatable

    public abstract boolean updatable

(Optional) Whether the column is included in SQL UPDATE statements generated by the persistence provider.

Default:
  true

#### columnDefinition

    public abstract java.lang.String columnDefinition

(Optional) The SQL fragment that is used when generating the DDL for the column.

Defaults to the generated SQL to create a column of the inferred type.

Default:
  ""

#### table

    public abstract java.lang.String table

(Optional) The name of the table that contains the column. If absent the column is assumed to be in the primary table.

Default:
  ""

#### length

    public abstract int length

(Optional) The column length. (Applies only if a string-valued column is used.)

Default:
  255

#### precision

    public abstract int precision

(Optional) The precision for a decimal (exact numeric) column. (Applies only if a decimal column is used.) Value must be set by developer if used when generating the DDL for the column.

Default:
  0

#### scale

    public abstract int scale

(Optional) The scale for a decimal (exact numeric) column. (Applies only if a decimal column is used.)

Default:
  0