JPA hibernate 主键生成策略
@Id@GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "native")
?或
@Id@GeneratedValue(strategy=GenerationType.AUTO)
?
2.table?:??org.hibernate.id.enhanced.TableGenerator
?
@Id@GeneratedValue(strategy=GenerationType.TABLE, generator="empGen")@TableGenerator( name="empGen", table="ID_GEN", pkColumnName="GEN_KEY", valueColumnName="GEN_VALUE", pkColumnValue="EMP_ID", allocationSize=1)public int id;
?
3.uuid :?org.hibernate.id.UUIDHexGenerator
最高生成36位长唯一字符串(加上分隔符),默认32位
@Id @GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "uuid",parameters={//@Parameter(name="separator",value="自定义分隔符,长度1位")})private String id;?
4.hilo?:?org.hibernate.id.TableHiLoGenerator
?
@Id@GeneratedValue(generator="gen")@GenericGenerator(name="gen",strategy="hilo",parameters={//@Parameter(name="table",value="hibernate_unique_key"), //@Parameter(name="column",value="next_hi"),//@Parameter(name="schema",value="schema"),//@Parameter(name="catalog",value="catalog"),//@Parameter(name="max_lo",value="20")})private int id;?注释部分可以做相应的修改
5.assigned?:?org.hibernate.id.Assigned?
?
@Idprivate int id;
?
6.identity?:?org.hibernate.id.IdentityGenerator
?
@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;
?
7.select?:?org.hibernate.id.SelectGenerator
8.sequence?:?org.hibernate.id.SequenceGenerator
@Id@GeneratedValue(generator="gen")@GenericGenerator(name="gen",strategy="sequence",parameters={//@Parameter(name="sequence",value="hibernate_sequence"),//@Parameter(name="parameters",value=""),//@Parameter(name="schema",value=""),//@Parameter(name="catalog",value="")})private int id;或
@Id@GeneratedValue(strategy=GenerationType.SEQUENCE)private int id;
支持DB2.H2.HSQL.Informix.Ingres.Interbase.Mckoi.Mimer.Oracle.Postgre.RDMSOS2200.SAPDB.TimesTen
?
9.seqhilo?:?org.hibernate.id.SequenceHiLoGenerator
?
@Id@GeneratedValue(generator="gen")@GenericGenerator(name="gen",strategy="seqhilo",parameters={//@Parameter(name="sequence",value="hibernate_sequence"),//@Parameter(name="parameters",value=""),//@Parameter(name="schema",value=""),//@Parameter(name="catalog",value=""),//@Parameter(name="max_lo",value="20")})private int id;支持DB2.H2.HSQL.Informix.Ingres.Interbase.Mckoi.Mimer.Oracle.Postgre.RDMSOS2200.SAPDB.TimesTen
?
10.increment?:?org.hibernate.id.IncrementGenerator
?
@Entity@Table(name = "id_increment_gen")public class IncrementGen {@Id@GeneratedValue(generator="gen")@GenericGenerator(name="gen",strategy="increment",parameters={@Parameter(name="tables",value="id_increment_gen"),//@Parameter(name="identity_tables",value="id_increment_gen"),@Parameter(name="column",value="id"),//@Parameter(name="target_column",value="id"),//@Parameter(name="schema",value=""),//@Parameter(name="catalog",value="")})private int id;? ?其中tables参数和identity_tables参数互斥,tables参数优先。column参数和target_column参数互斥, ? column参数优先,支持多表,以","分隔,会生成类似如下的语句:?
?
select max (ids_.id) from ( select id from id_increment_gen ) ids_?多表时为:
?
select max (ids_.id) from ( select id from id_increment_gen1 union select id from id_increment_gen2 ) ids_
?
11.foreign?:?org.hibernate.id.?ForeignGenerator?
12.guid?:?org.hibernate.id.?GUIDGenerator
@Id@GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "guid")private String id;
?支持mysql,oracle,sybase
?
13.uuid.hex?:?org.hibernate.id.UUIDHexGenerator? // uuid.hex is deprecated
14.sequence-identity?:?org.hibernate.id.SequenceIdentityGenerator
15.自定义
可同时实现接口org.hibernate.id.IdentifierGenerator,org.hibernate.id.Configurable
@Id@GeneratedValue(generator = "gen") @GenericGenerator(name = "gen", strategy = "xg.CustGenerator")private String id;
?strategy填写具体类名?
?