id生成策略
在xml中:
- uuid
注意,需要将java类中对应字段设为String,xml文件中
<id name="id" >
<generator class="uuid"/>
</id>
- native
(hibernate自动匹配id生成策略)
如果是mysql数据库,java类中对应字段设为int
(注意,如果只修改字段类型的话,hibernate不会重新生成表,测试时注意把旧表删掉) - sequence
在oracle中 - identity
在mysql中
在annotation中:
1. auto
默认情况下相当于native,根据数据库的类型来生成
2. sequece(oracle)
// 在类名上指定sequece的名字
@SequenceGenerator(name = "teacherSEQ",sequenceName = "teacherSEQ_db")
public class Teacher {...}
// 在主键id上指定生成策略
@Id // 主键
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "teacherSEQ")// oracle
public int getId() {
return id;
}
3.table(用一张表来生成主键)
// 好处是跨平台,数据跨平台,在实际工作中几乎不用
@TableGenerator(name="Teacher_GEN",
table = "GENERATOR_TABLE",
pkColumnName = "pk_key",
valueColumnName = "pk_value",
pkColumnValue = "Teacher",
allocationSize = 1)
public class Teacher {...}
@GeneratedValue(strategy = GenerationType.TABLE,generator = "Teacher_GEN")// oracle
public int getId() {
return id;
}
- identity
mysql可使用