increment
1、由Hibernate自动生成,Hibernate会获取映射表中最大的主键id,在其基础上加1,不依赖底层数据库
2、type类型必须映射为long,int,short
identity
1.由底层数据库来生成标识符,如果底层数据库不支持自动增长将出错
2.type类型必须映射为long,int,short
sequence
1.有底层数据库来生成标识符,如果底层数据库不支持系列将出错(Mysql就不支持)
2.type类型必须映射为long,int,short
native
1.根据底层数据库的支持方式来生成标识符
2.type类型必须为long,int,short
ps:native用的比较多
uuid
1.hibernate自动生成不重复的32位字符串作为主键
2.type的类型为string
assigned
1.编写代码传值给数据库作为主键
2.type的类型不固定,只要符合对应的类型,不出现错误即可
总结:
假如要自动生成相应的主键选择native比较好
假如指定的数据可以作为主键,可以选择assigned,比如学生的学号