Spring data Cassandra преобразует имя пространства ключей и имена таблиц в нижний регистр - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь отобразить существующие таблицы Cassandra в классы Java, используя Cassandra данных Spring. Имена таблиц имеют заглавные буквы, например «MyTable». Тем не менее, когда я использую @Table («MyTable»), cassandra данных Spring не распознает таблицу, потому что обрабатывает имя как строчные.

Можно ли как-то сказать Кассандре с данными Spring не преобразовывать имена в нижний регистр?

Пример кода:

import org.springframework.data.cassandra.core.mapping.Table;

@Table("MyTable")
public class MyTable {

}

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Мне удалось решить проблему, добавив (forceQuote = true) к аннотации @Table.

@Table(value = "MyTable", forceQuote = true)
public class MyTable {

}
0 голосов
/ 18 января 2019

В CQL Cassandra идентификаторы, такие как пространство ключей, имена таблиц и столбцов, не чувствительны к регистру. Если вы хотите использовать смешанный регистр, вы должны указать свои имена, т.е.

import org.springframework.data.cassandra.core.mapping.Table;

@Table("\"MyTable\"")
public class MyTable {

}

При этом я настоятельно рекомендую не использовать идентификаторы смешанного регистра. Хотя это работает, это создает большую сложность в том, чтобы беспокоиться о цитировании всего. Соглашение, которое я чаще всего вижу с Cassandra, заключается в использовании строчных букв _ в качестве разделителя слов, то есть my_table. Вы все еще можете использовать MyTable в качестве имени класса для соответствия соглашениям Java.

...