首页 文章

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

提问于
浏览
2

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

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

2 回答

  • 6

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

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

    Default constructor -

    public MyEntity() {
    
    }
    

    Parametrized constructor - 在构造函数中传递除 id 字段之外的所有字段 . 应在应用程序代码中调用此构造函数 . 输入和否 . 田地可以变化 -

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

    使用此方法的一个主要好处是 Spring 使用默认构造函数将 CQL 与POJO类映射,例如在 SELECT 查询响应中 .

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

  • 1

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

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

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

相关问题