【问题标题】:Spring data Cassandra converts the keyspace name and table names into lowercaseSpring data Cassandra 将键空间名称和表名称转换为小写
【发布时间】:2019-06-12 19:36:53
【问题描述】:

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

有没有办法告诉 spring data cassandra 不要将名称转换为小写?

示例代码:

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

@Table("MyTable")
public class MyTable {

}

【问题讨论】:

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


    【解决方案1】:

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

    import org.springframework.data.cassandra.core.mapping.Table;
    
    @Table("\"MyTable\"")
    public class MyTable {
    
    }
    

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

    【讨论】:

    • 不幸的是,这不起作用。抛出以下异常:java.lang.IllegalArgumentException: given string ["MyTable"] is not a validquoted or unquoted identifier
    • 啊,我当时没有意识到有一个单独的选项,很高兴你知道了!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 2017-07-16
      • 2022-08-16
      • 2015-06-16
      • 2020-07-06
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      相关资源
      最近更新 更多