Spring 数据 Cassandra 将键空间名称和 table 名称转换为小写
Spring data Cassandra converts the keyspace name and table names into lowercase
我正在尝试使用 spring 数据 cassandra 将现有的 Cassandra table 映射到 java 类。 table 名称有大写字母,例如 "MyTable"。但是,当我使用 @Table("MyTable") 时,spring data cassandra 无法识别 table,因为它将名称视为小写。
有没有办法告诉 spring data cassandra 不要将名称转换为小写?
示例代码:
import org.springframework.data.cassandra.core.mapping.Table;
@Table("MyTable")
public class MyTable {
}
在 Cassandra 的 CQL 中,键空间、table 和列名等标识符不区分大小写。如果您想使用混合大小写,您必须引用您的名字,即:
import org.springframework.data.cassandra.core.mapping.Table;
@Table("\"MyTable\"")
public class MyTable {
}
也就是说,我强烈建议不要使用大小写混合的标识符。虽然它有效,但它会产生很多复杂性,因为必须担心引用所有内容。我在 Cassandra 中看到最多的约定是使用所有小写字母 _
作为单词的分隔符,即 my_table
。您仍然可以使用 MyTable
作为您的 class 名称以满足 java 约定。
我能够通过将 (forceQuote = true) 添加到 @Table 注释来解决问题。
@Table(value = "MyTable", forceQuote = true)
public class MyTable {
}
我正在尝试使用 spring 数据 cassandra 将现有的 Cassandra table 映射到 java 类。 table 名称有大写字母,例如 "MyTable"。但是,当我使用 @Table("MyTable") 时,spring data cassandra 无法识别 table,因为它将名称视为小写。
有没有办法告诉 spring data cassandra 不要将名称转换为小写?
示例代码:
import org.springframework.data.cassandra.core.mapping.Table;
@Table("MyTable")
public class MyTable {
}
在 Cassandra 的 CQL 中,键空间、table 和列名等标识符不区分大小写。如果您想使用混合大小写,您必须引用您的名字,即:
import org.springframework.data.cassandra.core.mapping.Table;
@Table("\"MyTable\"")
public class MyTable {
}
也就是说,我强烈建议不要使用大小写混合的标识符。虽然它有效,但它会产生很多复杂性,因为必须担心引用所有内容。我在 Cassandra 中看到最多的约定是使用所有小写字母 _
作为单词的分隔符,即 my_table
。您仍然可以使用 MyTable
作为您的 class 名称以满足 java 约定。
我能够通过将 (forceQuote = true) 添加到 @Table 注释来解决问题。
@Table(value = "MyTable", forceQuote = true)
public class MyTable {
}