Сопоставьте материализованное представление Кассандры с Java API DSE - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть таблица Кассандры со связанным материализованным представлением.

Первичный ключ - это один идентификатор типа uuid, и у меня нет ключа сортировки. Давайте назовем это 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'

Идет генерация кода, поэтому, похоже, что-то генерируется неправильно, но я не могу понять, что именно.

Единственная легкая полезная документация, которую я нахожу, это здесь и здесь , но, похоже, никто не предлагает помощь.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Ну, не так много ответов, потому что это был не слишком большой вопрос, но кому-то, имеющему подобную проблему, может быть полезно.

Эта специфическая проблема была вызвана тем, что я искал не ту базу данных, в которой, конечно, не было созданных таблиц и представлений. У меня был файл переопределения свойств, который, по моему мнению, был установлен правильно, и это была моя ошибка.

0 голосов
/ 04 сентября 2018

Вы пытались добавить значение пространства ключей в аннотацию @MaterializedView?

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