1. 程式人生 > >JPA註解

JPA註解

log ora 生成策略 nbsp ble auto 聲明 增長 field

@GeneratedValue

為一個實體生成一個唯一標識的主鍵,JPA要求每一個實體Entity,必須有且只有一個主鍵,他提供了主鍵的生成策略。

@GeneratedValue註解有兩個屬性:strategy和generator

其中strategy用於標註主鍵的生成策略,默認情況下,JPA會自動選擇一個適合底層數據庫的主鍵生成策略;

generator屬性的值是一個字符串,默認為"",聲明了主鍵生成器的名稱(對應於同名的主鍵生成器@SequenceGenerator和@TableGenerator)。

在javax.persistence.GenerationType中定義了以下幾種可供選擇的策略:
–IDENTITY:采用數據庫ID自增長的方式來自增主鍵字段,Oracle 不支持這種方式;
–AUTO: JPA自動選擇合適的策略,是默認選項;
–SEQUENCE:通過序列產生主鍵,通過@SequenceGenerator 註解指定序列名,MySql不支持這種方式
–TABLE:通過表產生主鍵,框架借由表模擬序列產生主鍵,使用該策略可以使應用更易於數據庫移植。

可以在屬性上面或者getter上面進行註解 ;註意: 不能一部分註解在屬性上,一部分註解在getter上,否則會拋出異常

@GenericGenerator

自定義主鍵生成策略

就可以用hibernate特有以下用法來實現 ,Java代碼

@GeneratedValue(generator = "paymentableGenerator")

@GenericGenerator(name = "paymentableGenerator", strategy = "assigned")

@GenericGenerator的定義: (Java代碼

@Target({PACKAGE, TYPE, METHOD, FIELD})  
@Retention(RUNTIME)  
public @interface GenericGenerator {  
 /** 
  * unique generator name 
  */  
 String name();  
 /** 
  * Generator strategy either a predefined Hibernate 
  * strategy or a fully qualified class name. 
  */  
 String strategy();  
 /** 
  * Optional generator parameters 
 * parameters得到strategy指定的具體生成器所用到的參數 */ Parameter[] parameters() default {}; }

  詳細介紹參考:http://blog.csdn.net/linan0930/article/details/21108411

JPA註解