@Id:?
@Id 標注用于聲明一個實體類的屬性映射為數據庫的主鍵列。該屬性通常置于屬性聲明語句之前,可與聲明語句同行,也可寫在單獨行上。?
@Id標注也可置于屬性的getter方法之前。
@GeneratedValue:?
@GeneratedValue 用于標注主鍵的生成策略,通過strategy 屬性指定。默認情況下,JPA 自動選擇一個最適合底層數據庫的主鍵生成策略:SqlServer對應identity,MySQL 對應 auto increment。?
在javax.persistence.GenerationType中定義了以下幾種可供選擇的策略:?
–IDENTITY:采用數據庫ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式;?
–AUTO: JPA自動選擇合適的策略,是默認選項;?
–SEQUENCE:通過序列產生主鍵,通過@SequenceGenerator 注解指定序列名,MySql不支持這種方式?
–TABLE:通過表產生主鍵,框架借由表模擬序列產生主鍵,使用該策略可以使應用更易于數據庫移植。
推薦的兩種寫法:?
屬性之上:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
getter方法之上:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
但是不能某個注解在屬性之上,某個注解在getter之上,將拋出異常,對其他注解也相同
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
上面的寫法是錯誤的