如果要使用Hibernate
的主键生成策略,需要使用Hibernate
的@GenericGenerator
主键生成器。
主要有2个属性:
1. name
: 指定主键生成器的名称,该名称可以被@GenerateValue
的generator
属性使用。
2. strategy
: 设置主键生成器的主键生成策略。下面是部分策略:
- identity
: mysql
、Sql Server
等提供自增长主键的数据库使用。
- sequence
: Oracle
等提供Sequence
的数据库使用。
- uuid
: 使用uuid
算法生成的字符串作为主键。UUID
生成的值被当做一个唯一的值。
- guid
: mysql
、Sql Server
中使用数据库生成的guid
字符串。
- native
: 根据数据库底层能力选择identity
、sequence
或者hilo
中的一个。
使用uuid
的主键生成策略:
@Entity
@Table(name = "student")
public class Student {
@Id
@GenericGenerator(name = "student_fk", strategy = "uuid")
@GeneratedValue(generator = "student_fk")
private String mId;
private String name;
//省略get、set、构造器部分
``````
}
测试代码
Student student = new Student();
student.setName("sweat1");
session.save(student);
Mysql
的数据
mysql> select * from student;
+----------------------------------+--------+
| mId | name |
+----------------------------------+--------+
| ff8081815ad2495e015ad24961420000 | sweat1 |
+----------------------------------+--------+
1 row in set (0.00 sec)
可以看到主键的值为32为的UUID
类型。