【问题标题】:Map Cassandra Materialized View with DSE's Java API使用 DSE 的 Java API 映射 Cassandra 物化视图
【发布时间】:2019-02-09 05:57:53
【问题描述】:

我有一个带有关联物化视图的 cassandra 表。

主键是 uuid 类型的单个 id,我没有排序键。我们称之为my_table_id。此表包含我要用于搜索的related_id

然后我有一个定义为该表的物化视图

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

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

我在我的 java 代码中将我的表定义为:

@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 Boot 应用程序时,我得到:

错误:java:找不到基实体类 视图类的“mypackage.MyTableType” 'mypackage.MyTableTypeByRelatedId' 错误:java:解析时出错:找不到基实体类 视图类的“mypackage.MyTableType” 'mypackage.MyTableTypeByRelatedId'

正在生成一些代码,所以似乎有些东西没有正确生成,但我不太清楚是什么。

我发现的唯一有用的文档是 herehere,但似乎没有一个提供帮助。

我做错了什么?

【问题讨论】:

    标签: java cassandra datastax datastax-java-driver


    【解决方案1】:

    嗯,答案不多,因为这不是什么大问题,但遇到类似问题的人可能会发现它很有用。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的。试过了。这通常会给我一个不同的错误,但仍然不起作用。不过,谢谢
      • 我创建了一个新表和物化视图,只有几个字段要测试。使用键空间,我得到 info.archinnov.achilles.exception.AchillesException: 在实体 mypackage.MyTableType 上定义的表 my_table 在 Cassandra 中不存在。这真的没有意义,因为正如你所指出的,它在一个键空间中,所以应该指定。但我得到这个错误
      • @MaterializedView 注解从何而来?它是 DSE API 或 Spring Data Cassandra 的一部分吗?我在这两个中都找不到这样的注释。
      猜你喜欢
      • 2017-11-23
      • 2015-03-13
      • 2016-05-07
      • 2023-03-26
      • 2019-03-03
      • 2018-04-13
      • 1970-01-01
      • 2018-07-04
      相关资源
      最近更新 更多