主鍵生成策略

 increment 用於爲long, short或者int類型生成 唯一標識。只有在沒有其他進程往同一張表中插入數據時才能使用。 在集羣下不要使用。 

 identity 對DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的內置標識字段提供支持。 返回的標識符是long, short 或者int類型的。 
 
sequence 在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的標識符是long, short或者 int類型的。 

 hilo 使用一個高/低位算法高效的生成long, short 或者 int類型的標識符。給定一個表和字段(默認分別是 hibernate_unique_key 和next_hi)作爲高位值的來源。 高/低位     算法生成的標識符只在一個特定的數據庫中是唯一的。 

 seqhilo 使用一個高/低位算法來高效的生成long, short 或者 int類型的標識符,給定一個數據庫序列(sequence)的名字。 

 uuid 用一個128-bit的UUID算法生成字符串類型的標識符, 這在一個網絡中是唯一的(使用了IP地址)。UUID被編碼爲一個32位16進制數字的字符串。 

 guid 在MS SQL Server 和 MySQL 中使用數據庫生成的GUID字符串。 

 native 根據底層數據庫的能力選擇identity, sequence 或者hilo中的一個。在mysql中默認的是auto_increment,SQLSERVER中是identity.

 assigned 讓應用程序在save()之前爲對象分配一個標示符。這是 <generator>元素沒有指定時的默認生成策略。 

 select 通過數據庫觸發器選擇一些唯一主鍵的行並返回主鍵值來分配一個主鍵。 

 foreign 使用另外一個相關聯的對象的標識符。通常和<one-to-one>聯合起來使用。 

  sequence-identity 一種特別的序列生成策略,使用數據庫序列來生成實際值,但將它和JDBC3的getGeneratedKeys結合在一起,使得在插入語句執行的時候就返回生成的值。    目前爲止只有面向JDK 1.4的Oracle 10g驅動支持這一策略。注意,因爲Oracle驅動程序的一個bug,這些插入語句的註釋被關閉了。(原文:Note comments on these insert statements are disabled due to a bug in the Oracle drivers.)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章