JPA @Column 註解
阿新 • • 發佈:2019-02-12
@Column
是屬性或方法級別的註解,用於指定持久化屬性對映到資料庫表的列。如果沒有指定列註釋,則使用其預設值。
引數 | 型別 | 描述 |
---|---|---|
name | String | 列的名稱,預設為屬性的名稱(Hibernate 對映列時,若遇到駝峰拼寫,會自動新增_ 連線並將大寫字母改成小寫)。 |
unique | boolean | 列的值是否是唯一的。這是@UniqueConstraint註解的一個快捷方式, 實質上是在宣告唯一約束。預設值為 false。 |
nullable | boolean | 列的值是否允許為 null。預設為 true。 |
insertable | boolean | 列是否包含在INSERT 語句中,預設為 true。 |
updatable | boolean | 列是否包含在UPDATE 語句中,預設為 true。 |
columnDefinition | String | 生成列的 DDL 時使用的 SQL 片段。預設使用推斷的型別來生成 SQL 片段以建立此列。 |
table | String | 當前列所屬的表的名稱。 |
length | int | 列的長度,僅對字串型別的列生效。預設為255。 |
precision | int | 列的精度,僅對十進位制數值有效,表示有效數值的總位數。預設為0。 |
scale | int | 列的精度,僅對十進位制數值有效,表示小數位的總位數。預設為0。 |
1. 示例
12345678910111213141516171819202122232425 | "person")public | (name =
產生的 DDL 語句(MySQL):
123456789 | CREATE TABLE `person` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `assets` double NOT NULL, `mail` varchar(128) DEFAULT NULL, `name` varchar(32) NOT NULL, `phone` char(11) NOT NULL, `salary` decimal(5,2) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
可以看出,salary 欄位的精度控制生效了,但對於double
型別的 assets 欄位的精度控制沒有生效,為了使其生效,將程式碼修改為:
12 | "double(5, 2)")private double assets; | (columnDefinition =
產生的 DDL 語句(MySQL):
123456789 | CREATE TABLE `person` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `assets` double(5,2) DEFAULT NULL, `mail` varchar(128) DEFAULT NULL, `name` varchar(32) NOT NULL, `phone` char(11) NOT NULL, `salary` decimal(5,2) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; |