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