我的问题是对this,this和我自己的previous question的扩展。
在也加载了其他读数之后,我的实体中包含以下内容:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "useruuid")
@GenericGenerator(name = "uuid", strategy = "uuid4")
private String useruuid;
问题1:以上声明是否有效?我们都知道@Id是肯定的。这个问题更多地集中在@GenericGenerator(name = "uuid", strategy = "uuid4").
上,这意味着在已经拥有@GeneratedValue
的实体中生成UUID。可以接受吗?我试过了,它有效。
问题2:如果上面的结果是肯定的,那么生成的UUID(字符串)对于整个数据库还是仅对于实体是唯一的?我在这里寻求帮助,因为我将在同一数据库的其余实体中使用相同的模式。
答案 0 :(得分:1)
是的@GenericGenerator(name = "uuid", strategy = "uuid4")
是可以接受的,完全正确。
现在要问第二个问题,生成的UUID在整个数据库中是唯一的。实际上,它是全局唯一的,因此UUID被称为“全局唯一标识符”(GUID)。
除非您多年连续每秒生成十亿个UUID,否则您不会看到两个UUID版本4实现冲突。