解釋Java類中@GeneratedValue註解

@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;

}

相關文章
相關標籤/搜索