@Idannotation繼承自javax.persistence.Id,表示下面的成員字段是當前實體的主鍵。所以,你的Hibernate和spring框架以及你能夠作一些反射基於這個註釋的做品。java
@GeneratedValue註釋是配置指定列(字段)增量的方式。例如,當使用Mysql時,您能夠在表的定義中指定auto_increment以使其自增量,而後使用spring
1.在數據庫中定義序列sql
例如,Oracle必須使用序列做爲增量方法,假設咱們在Oracle中建立一個序列:數據庫
create sequence oracle_seq;oracle
2.參考數據庫序列框架
如今咱們在數據庫中有序列,可是咱們須要創建Java和DB之間的關係,經過使用@SequenceGenerator:繼承
@SequenceGenerator(name="seq",sequenceName="oracle_seq")rem
sequenceName是Oracle中序列的真實名稱,name是您要在Java中調用它的名稱。若是它不一樣於name,你須要指定sequenceName,不然只需使用name。我一般忽略sequenceName來節省個人時間。generator
3.在Java中使用序列io
最後,是時候在Java中使用這個序列。只需添加@GeneratedValue:
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
生成器字段指的是要使用的序列生成器。請注意,它不是DB中的實際序列名稱,而是您在SequenceGenerator的name字段中指定的名稱。
4.完成 因此完整的版本應該是這樣的: public class MyTable{ @Id @SequenceGenerator(name="seq",sequenceName="oracle_seq") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq") private Integer pid;
}