Spring单个实体中两个自动生成的ID

问题描述 投票:0回答:2

我需要在 Spring 中使用注释生成两个 ID(列值)。 如果我需要使用注释自动生成 2 个 ID(ID 和 UUID),那么解决方案是什么,我将使用通过以下方式生成的 UUID:

@Id 
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
private String uuid;

但是我无法同时使用@Id注释并且无法自动生成ID(第二个生成字段)

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;

自动生成两列 ID 和 UUID 的最佳解决方案是什么,因为只有一个 @Id 仅创建一个,另一个为空? 我需要一些 Hibernate 解决方案,而不是以编程方式生成其中之一。

hibernate spring-mvc annotations uuid auto-generate
2个回答
0
投票

一种可能的解决方案是使用如下所示的客户查询

@Query("插入表名值(some_val,some_val,(从同一个表名中选择 max(some_id)+1))") 无效保存实体();

它将运行子查询来获取最新值并加1并保存 但我不确定它会如何影响程序的性能


-1
投票

我暂时决定使用 UUID.randomUUID(),但我仍然渴望听到通过 hibernate 生成两个 id 的其他可能的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.