在Spring-Data Cassandra中如何自动生成UUID或timeuuid?

3

我正在使用spring-data-cassandra。是否有一种方式或注释,可以在我的实体Java POJO中用于uuid或timeuuid类型的主键,以自动生成主键(id)的值?

我知道我可以使用id = UUIDs.timeBased();,但我想要自动化它。

2个回答

8

您可以始终实现默认构造函数:

MyEntity() {
    id = UUIDs.timeBased();
}

这样是否足够?显然,这将在实例化时产生不必要的生成,会消耗系统中的一些随机熵。但是,如果您的系统没有过多的高压运行,那么您应该是安全的。


好的,这个想法不错。我也在想为什么他不直接那样做呢。 - Aaron

3

虽然id可以在默认构造函数中初始化,但这样会导致不必要的UUIDs生成。

更好的方法是利用POJO类的多个构造函数 -

默认构造函数 -

public MyEntity() {

}

参数化构造函数 - 在构造函数中传递除id字段之外的所有字段。该构造函数应在应用程序代码中调用。字段的类型和数量可能会有所变化 -

public MyEntity(String field1) {
     this.field1 = field1;
     this.id = UUIDs.timeBased();
}

使用这种方法的一个主要优势是 - 默认构造函数被Spring用于将CQL与POJO类映射,例如在SELECT查询响应中。因此,通过这种方式,Spring框架可以避免不必要的UUID生成,并完成一些优化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接