Spring Boot 自动生成的UUID列,不带@Id标注

k10s72fa  于 2023-04-06  发布在  Spring
关注(0)|答案(2)|浏览(251)

我有一个表,并且已经定义了id,但是由于某些原因,我需要自动生成uuid列并且是唯一的。
我尝试了各种各样的注解,但似乎都不起作用:

@Column(columnDefinition = "BINARY(16)")
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")

是否可以不将uuid定义为@Id?谢谢。

public class EntityClass {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   private UUID uuid;
}
gk7wooem

gk7wooem1#

如果你使用一个序列,注解@SequenceGenerator应该对你有用,例如:

@SequenceGenerator(name="uuid2", allocationSize=1, sequenceName="ID_SEQUENCE")
@Id @GeneratedValue(strategy=SEQUENCE, generator="uuid2")
@Column(name="ID", unique=true, nullable=false, precision=15, scale=0)
public Long getId() {
   return this.id;
}
qxsslcnc

qxsslcnc2#

其实我是这样做的:

public class EntityClass {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column(unique = true, nullable = false)
   private UUID uuid = UUID.randomUUID();
}

在初始保存时,将设置UUID,并且它应该是唯一的,而不是null。

相关问题