在Spring-data Cassandra中自动生成UUID或timeuuid?

时间:2015-02-03 09:53:40

标签: java cassandra spring-data uuid spring-data-cassandra

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

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

2 个答案:

答案 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生成,并且可以进行一些优化。