如何在Spring Boot 3.0 Cassandra应用中实现UUID自动生成
Spring Data Cassandra实现UUID自动生成的注解方式
针对你的环境(Java 19、Spring Boot 3.0、spring-data-cassandra依赖),确实存在类似JPA @GeneratedValue的注解方式来自动生成UUID主键,以下是两种可行方案:
方案一:使用@PrimaryKeyColumn指定生成策略
直接在主键字段上使用@PrimaryKeyColumn注解,配置分区键类型并指定UUID生成器,插入时会自动生成UUID值:
import org.springframework.data.cassandra.core.mapping.PrimaryKeyColumn; import org.springframework.data.cassandra.core.mapping.PrimaryKeyType; import org.springframework.data.cassandra.core.mapping.UUIDGenerator; import org.springframework.data.cassandra.core.mapping.Table; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.UUID; @Table @Data @AllArgsConstructor @NoArgsConstructor public class Player { @PrimaryKeyColumn(name = "id", type = PrimaryKeyType.PARTITIONED, generatorType = UUIDGenerator.class) private UUID id; }
方案二:使用@GeneratedValue注解
Spring Data Cassandra提供了专属的@GeneratedValue注解(注意与JPA的注解包不同),配合@PrimaryKey使用即可实现自动生成:
import org.springframework.data.cassandra.core.mapping.GeneratedValue; import org.springframework.data.cassandra.core.mapping.PrimaryKey; import org.springframework.data.cassandra.core.mapping.Table; import org.springframework.data.cassandra.core.mapping.UUIDGenerator; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.UUID; @Table @Data @AllArgsConstructor @NoArgsConstructor public class Player { @PrimaryKey @GeneratedValue(generator = UUIDGenerator.class) private UUID id; }
注意事项
- 上述注解均来自
org.springframework.data.cassandra.core.mapping包,不要导入JPA的同名注解; - 两种方案在Spring Data Cassandra 3.x(适配Spring Boot 3.0)版本下均可正常工作,插入实体时框架会自动为
id字段生成UUID,无需手动赋值。
内容的提问来源于stack exchange,提问作者Prafulla Kumar Sahu
相关产品推荐
相关产品推荐

