2

我正在使用弹簧数据卡桑德拉。有没有一种方法或注释可以在我的实体 java POJO 中用于 uuid 或 timeuuid 类型的主键,以自动生成主键(id)的值?

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

4

2 回答 2

7

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

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

这样就够了吗?这显然需要在实例化时进行不必要的生成,这会在您的系统上消耗一些随机熵。但是,如果您的系统没有在过高的压力下运行,那么您应该是安全的。

于 2015-02-04T16:57:22.437 回答
1

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

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

默认构造函数-

public MyEntity() {

}

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

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

使用这种方法的一个主要好处是 - 默认构造函数用于与 POJO 类Spring进行映射CQL,例如在SELECT查询响应中。

UUID因此,通过这种方式,可以避免不必要的生成,并且可以进行Spring framework一些优化。

于 2017-07-29T16:36:44.387 回答