【问题标题】:Java UUID or QueryBuilder uuidJava UUID 或 QueryBuilder uuid
【发布时间】:2026-01-07 01:55:02
【问题描述】:

我正在使用Datastax Java 驱动程序在 Cassandra 数据库中执行基本的插入语句。我的主键列是uuid 类型。根据我在官方文档中看到的,在 Cassandra 中调用 uuid() 函数的推荐方法是使用 QueryBuilder#uuid() 方法。但是,使用 java util 的 UUID.randomUUID() 是否也安全,因为我的类型发生冲突(QueryBuilder.uuid() 返回 ObjectUUID.randomUUID() 返回 UUID)?

【问题讨论】:

    标签: java cassandra


    【解决方案1】:

    UUID.randomUUID() 创建类型 4 UUID 并且可以安全使用。

    其实datastax UUID实用类com.datastax.driver.core.utils.UUIDs有一个名为random()的方法,只是方便UUID.randomUUID()

    【讨论】:

    • 如果需要存储现有的 UUID 怎么办?像饼干一样?
    • @lisak UUID 是可序列化的。您可以使用 jackson 之类的库来序列化/反序列化。
    【解决方案2】:

    如果您使用生成的 UUID 进行排序(集群密钥),请使用QueryBuilder#uuid()。这是因为 Cassandra 有不同的implementation。 Java UUID 排序不同。

    如果您将其用作任何其他密钥,则没关系。

    希望对你有帮助!

    【讨论】: