就像@Table注解用來標(biāo)識實體類與數(shù)據(jù)表的對應(yīng)關(guān)系類似,@Column注解來標(biāo)識實體類中屬性與數(shù)據(jù)表中字段的對應(yīng)關(guān)系。

該注解的定義如下:

@Target({METHOD, FIELD}) 
@Retention(RUNTIME) 
public @interface Column { 
    String name() default ""; 
    boolean unique() default false; 
    boolean nullable() default true; 
    boolean insertable() default true; 
    boolean updatable() default true; 
    String columnDefinition() default ""; 
    String table() default ""; 
    int length() default 255; 
    int precision() default 0; 
    int scale() default 0; 
}

從定義可以看出,@Column注解一共有10個屬性,這10個屬性均為可選屬性,各屬性含義分別如下:

name
name屬性定義了被標(biāo)注字段在數(shù)據(jù)庫表中所對應(yīng)字段的名稱;

unique
unique屬性表示該字段是否為唯一標(biāo)識,默認(rèn)為false。如果表中有一個字段需要唯一標(biāo)識,則既可以使用該標(biāo)記,也可以使用@Table標(biāo)記中的@UniqueConstraint。

nullable
nullable屬性表示該字段是否可以為null值,默認(rèn)為true。

insertable
insertable屬性表示在使用“INSERT”腳本插入數(shù)據(jù)時,是否需要插入該字段的值。

updatable
updatable屬性表示在使用“UPDATE”腳本插入數(shù)據(jù)時,是否需要更新該字段的值。insertable和updatable屬性一般多用于只讀的屬性,例如主鍵和外鍵等。這些字段的值通常是自動生成的。

columnDefinition
columnDefinition屬性表示創(chuàng)建表時,該字段創(chuàng)建的SQL語句,一般用于通過Entity生成表定義時使用。(也就是說,如果DB中表已經(jīng)建好,該屬性沒有必要使用。)

table
table屬性定義了包含當(dāng)前字段的表名。

length
length屬性表示字段的長度,當(dāng)字段的類型為varchar時,該屬性才有效,默認(rèn)為255個字符。

precision和scale
precision屬性和scale屬性表示精度,當(dāng)字段類型為double時,precision表示數(shù)值的總長度,scale表示小數(shù)點所占的位數(shù)。

API文檔地址: http://docs.oracle.com/javaee/5/api/javax/persistence/Column.html