`
jacktea
  • 浏览: 6775 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

JPA hibernate 主键生成策略

    博客分类:
  • J2EE
 
阅读更多

hibernate加jpa自带一共14种。

1.native

@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 

 

@Id
private 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.IdentifierGeneratororg.hibernate.id.Configurable

@Id
@GeneratedValue(generator = "gen")     
@GenericGenerator(name = "gen", strategy = "xg.CustGenerator")
private String id;

 strategy填写具体类名 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics