使用 DSE Java API 映射 Cassandra 物化视图

Map Cassandra Materialized View with DSE's Java API

我有一个 cassandra table 具有关联的物化视图。

主键是一个uuid类型的id,我没有sort key。我们称它为 my_table_id。此 table 包含我要用于搜索的 related_id

然后我有一个物化视图 table 定义为

PRIMARY KEY (related_id, my_table_id) WITH CLUSTERING ORDER BY (my_table_id ASC)

PS:我意识到这是在Cassandra中分区数据的错误方式,但不幸的是,这段代码被继承了。

我在 java 代码中将 table 定义为:

@Table(table = "my_table")
public class MyTableType {
    @PartitionKey
    @Column("my_table_id")
    @Codec(MyIdCassandraConverter.class)
    CustomUUIDType myTableId;

    @Column("related_id")
    @Codec(MyRelatedIdCassandraConverter.class)
    MyRelatedId relatedId;

   (...)
}

这两个自定义类型只是 UUID 的包装器。再次,继承。

我的物化视图定义为:

@MaterializedView(baseEntity = MyTableType.class, view = "my_table_by_related_id")
public class MyTableTypeByRelatedId {
    @PartitionKey
    @Column("related_id")
    @Codec(MyRelatedIdCassandraConverter.class)
    MyRelatedId relatedId;

    @ClusteringColumn
    @Column("my_table_id")
    @Codec(MyIdCassandraConverter.class)
    CustomUUIDType myTableId;
}

代码似乎生成正确,但是当我启动 Spring 启动应用程序时,我得到:

Error:java: Cannot find base entity class 'mypackage.MyTableType' for view class 'mypackage.MyTableTypeByRelatedId' Error:java: Error while parsing: Cannot find base entity class 'mypackage.MyTableType' for view class 'mypackage.MyTableTypeByRelatedId'

正在进行一些代码生成,因此似乎生成的内容不正确,但我不太清楚是什么。

我找到的唯一有用的文档是 here and here,但 none 似乎可以提供帮助。

我做错了什么?

您是否尝试过在您的@MaterializedView 注释上添加键空间值?

@MaterializedView(keyspace = "xxxx", baseEntity = MyTableType.class, view = "my_table_by_related_id")

嗯,答案不多,因为这不是一个问题,但遇到类似问题的人可能会觉得它有用。

这个具体问题是因为我看错了数据库,当然没有我创建的表和视图。我有一个 属性 我认为设置正确的覆盖文件,那是我的错误。