在 cassandra 中,我的列类型之一是 timeuuid,其根据文档等效的 java 类型是 java.util.UUID
我的输入时间为 java.sql.Timestamp ,为了在实体类中设置它,我想转换java.sql.Timestamp -> java.util.UUID。
首先,您提到的文档指的是非常旧版本的 DataStax Java 驱动程序,您应该升级到版本 3.0.0。
也就是说,DataStax Java 驱动程序附带了一个实用程序类com.datastax.driver.core.utils.UUIDs. 它具有三种处理基于时间的 UUID 的有用方法:
timeBased(); 为当前时间戳创建一个新的基于时间的 UUID;此方法生成的时间戳适合作为timeuuid值插入 Cassandra 中。startOf(long)和endOf(long):这些方法分别提供给定时间戳的最低和最高可能的 UUID。它们主要适用于查询一系列timeuuid值。然而,就您的情况而言,您似乎正在从具有固定时间戳的 RDBMS 迁移数据。我建议您始终使用以下方法startOf(long)来迁移数据:
java.sql.Timestamp tp = ...;
UUID uuid = UUIDs.startOf(tp.getTime());
Run Code Online (Sandbox Code Playgroud)
在任何情况下,都不要尝试手动创建此类 UUID,因为 Cassandra 对timeuuid值进行排序的方式与UUID.comapreTo().
| 归档时间: |
|
| 查看次数: |
4251 次 |
| 最近记录: |