小编aem*_*nal的帖子

在 Spring MVC + Hibernate 中自动生成唯一的随机字符串

背景

我正在使用 Spring MVC (Framework v4.0.6.RELEASE, JPA v1.6.2.RELEASE) 和 Hibernate (Core v4.3.6.FINAL, JPA API v2.1) 编写一个项目。在我的项目中,有名为“项目”的实体。这些项目中的每一个都有其唯一的、自动生成的 ID 作为主键。此 ID 由以下代码生成:

@Id
@Column(name = "project_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long projectId;
Run Code Online (Sandbox Code Playgroud)

此代码按预期工作并自动创建唯一 ID。

问题

这些项目中的每一个都应该有一个随机的、唯一的1 'secret' String,就像 Facebook、Twitter 等 API 提供商分配的那样。因此,为了实现这一点,我尝试使用以下代码,根据 Hibernate 文档:

@Column(name = "project_secret", nullable = false, unique = true)
@GenericGenerator(name = "uuid-gen", strategy = "uuid")
@GeneratedValue(generator = "uuid-gen")
private String projectSecret;
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试创建一个新的项目实体时,都会遇到一个org.springframework.dao.DataIntegrityViolationException根本原因:

@Id
@Column(name = "project_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long projectId;
Run Code Online (Sandbox Code Playgroud)

这应该由 Hibernate …

java uuid spring hibernate jpa

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1

uuid ×1