有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Cassandra自定义类型映射器

我试图使用Cassandra Java驱动程序的映射注释。我有个目标

@Table(keyspace = "ks", name = "logs")
public Log() {
    @PartitionKey
    private String source;
    @ClusteringColumn
    private long timestamp;
    private String message;
}

业务逻辑就是根据这一点编写的。问题是我需要限制分区的增长。所以,我决定在分区键中使用部分时间戳。新的主键将是((source, date), timestamp)

我可以在不向Log类添加新字段的情况下执行此操作吗?我可以更改“Log”类的注释或添加任何其他中间类


共 (1) 个答案

  1. # 1 楼答案

    The new primary key will be ((source, date), timestamp).

    轻松

    @Table(keyspace = "ks", name = "logs")
    public Log() {
        @PartitionKey(0)
        private String source;
    
        @PartitionKey(1)
        private long date;
    
        @ClusteringColumn
        private long timestamp;
    
        private String message;
    }
    

    只需创建一个新的date字段,该字段从timestamp字段中提取,并在@PartitionKey注释上定义分区键顺序