添加註解後,框架沒有自動根據實體類生成資料表,Hibernate
阿新 • • 發佈:2019-01-28
- @Id註解:指定實體Bean的主鍵對映,需在getter方法上標註。
- @GeneratedValue註解:用於指定主鍵生成策略,註解支援的主鍵生成策略有:
- AUTO——相當於配置檔案中的native,根據底層資料庫自動選擇使用IDENTITY、SEQUENCE、TABLE型別(預設值)
- TABLE——使用table儲存id值
- IDENTITY——自增註解,資料庫需要支援主鍵自動增長
- SEQUENCE——使用序列生成
- 資料庫的自增主鍵
@Id @GeneratedValue(strategy= GenerationType.IDENTITY) public Long getId() { return id; }
- 序列生成器
@Id @GeneratedValue(strategy= GenerationType.SEQUENCE, generator ="SEQ_STORE") public Long getId() { return id; }
然而經常也會有誤操作的情況出現(以下程式碼有誤):
@Id @GeneratedValue(strategy=GenerationType.AUTO) private String simpleId;
上述誤操作的狀態經常表現在,伺服器啟動時發現框架並沒有自動根據註解過的實體類,在資料庫中生成資料表,出錯的原因在於,“@GeneratedValue
然而這類錯誤通常並不會反映任何的出錯提示,因此較難發現。
關於Hibernate註解的標註位置
Hibernate有兩種對映欄位的方式分別為:Filed和Property。
對應這兩種方式Hibernate分別會通過屬性(Java反射)或getter方法對映欄位。在使用註解的時候,@Id註解的位置決定了Hibernate的對映方式。
當@Id註解標註在屬性欄位上時,Hibernate會採用屬性對映方式,此時其他註解也必須標註在屬性上,否則程式會出錯;@Id註解標註在getId()方法上時,也是一樣的,總之所有註解的位置要保持和@Id註解位置一致。