我正在使用spring-data-cassandra。有没有一种方法或注释,可以在我的实体java POJO中用于uuid或timeuuid类型的主键,以自动生成主键(id)的值?
我知道我可以使用id = UUIDs.timeBased();
,但我想自动化它。
您始终可以实现默认构造函数:
MyEntity() {
id = UUIDs.timeBased();
}
这就够了吗?这显然需要在实例化时进行不必要的生成,这会消耗系统上的一些随机熵。但是,如果您的系统没有在过高的压力下运行,您应该是安全的。
,id
可以在默认构造函数中初始化。但是,这将导致不必要的UUIDs
生成。
一种更好的方法是利用 POJO 类的多个构造函数 -
默认构造函数 -
public MyEntity() {
}
参数化构造函数 - 在构造函数中传递除id
字段之外的所有字段。应在应用程序代码中调用此构造函数。类型和否。字段数可能会有所不同 -
public MyEntity(String field1) {
this.field1 = field1;
this.id = UUIDs.timeBased();
}
使用此方法的一个主要好处是 - Spring
使用默认构造函数将CQL
与 POJO 类进行映射,例如在SELECT
查询响应中。
因此,通过这种方式,可以通过Spring framework
避免不必要的UUID
生成,并且可以进行一些优化。