@GeneratedValue(generator = “JDBC“)

If the primary key is self increment, you have to add @GeneratedValue(generator = “JDBC”) on your entity’s field. Otherwise, the primary key can be got if you want to use it again.

### Java 中实现 Sequence ID 生成方法 #### 使用 Snowflake 算法生成唯一 ID Snowflake 是 Twitter 开源的一种分布式自增主键生成算法,能够保证全局有序性和唯一性。通过 `SnowflakeIdGenerator` 类可以方便地生成唯一的长整型 ID。 ```java import com.twitter.snowflake.SnowflakeIdGenerator; public class Main { public static void main(String[] args) { SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1L); // 设置机器ID for (int i = 0; i < 10; i++) { long id = idGenerator.generateId(); System.out.println("Generated ID: " + id); } } } ``` 此代码展示了如何创建一个基于特定工作节点的实例,并连续调用其 `generateId()` 方法来获取一系列不重复的数值[^1]。 #### 基于 MySQL 的 Sequence 实现 对于依赖数据库的应用程序来说,可以通过 JDBC 访问存储过程或表结构中的序列字段来进行 ID 生产操作。下面是一个利用 MyBatis Plus 提供的支持雪花算法分配策略的例子: ```xml <generator name="ASSIGN_ID"> <!-- 配置雪花算法 --> </generator> ``` 当配置好之后,在实体映射文件里指定主键生成方式即可自动完成赋值动作[^4]。 #### Hibernate 自定义 Generator 方案 如果项目采用的是 ORM 框架如 Hibernate,则可通过扩展框架自带的功能来自定义主键生产逻辑。这里给出了一种名为 `IDSequenceGenerator` 的解决方案,它允许开发者灵活控制每条记录所对应的编号规则。 ```java @GenericGenerator( name = "idGenerator", strategy = "cn.izern.hibernate.id.IDSequenceGenerator" ) @Id @GeneratedValue(generator = "idGenerator") private Long id; ``` 上述片段说明了怎样注册一个新的 generator 并将其应用到具体属性上,从而确保每次新增对象时都能获得独一无二的身份标识符[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值