Spring数据Cassandra将键空间名称和表名称转换为小写

时间:2019-01-18 14:06:21

标签: cassandra datastax datastax-java-driver spring-data-cassandra

我正在尝试使用spring数据cassandra将现有的Cassandra表映射到java类中。表名具有大写字母,例如“ MyTable”。但是,当我使用@Table(“ MyTable”)时,spring数据cassandra无法识别该表,因为它会将名称视为小写。

有什么办法告诉spring数据cassandra不要将名称转换为小写吗?

示例代码:

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

@Table("MyTable")
public class MyTable {

}

2 个答案:

答案 0 :(得分:1)

在Cassandra的CQL中,诸如键空间,表和列名之类的标识符不区分大小写。如果您希望使用大小写混合的形式,则必须引用您的姓名,即:

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

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

}

话虽如此,我强烈建议不要使用大小写混合的标识符。当它起作用时,它就使不得不担心引用所有内容产生了很多复杂性。我在Cassandra中看到的最常见的约定是使用所有小写的_作为单词的分隔符,即my_table。您仍然可以使用MyTable作为类名称来满足Java约定。

答案 1 :(得分:1)

我能够通过将(forceQuote = true)添加到@Table批注中来解决该问题。

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

}