我正在尝试使用spring数据cassandra将现有的Cassandra表映射到java类中。表名具有大写字母,例如“ MyTable”。但是,当我使用@Table(“ MyTable”)时,spring数据cassandra无法识别该表,因为它会将名称视为小写。
有什么办法告诉spring数据cassandra不要将名称转换为小写吗?
示例代码:
import org.springframework.data.cassandra.core.mapping.Table;
@Table("MyTable")
public class MyTable {
}
答案 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 {
}