【问题标题】:Cassandra Springboot Frozen column exceptionCassandra Springboot 冻结列异常
【发布时间】:2019-04-11 15:37:46
【问题描述】:

我有一个与 cassandra 连接的 springboot 应用程序。我正在尝试在地图内创建地图,但出现以下异常。

com.datastax.driver.core.exceptions.InvalidQueryException: Non-frozen collections are not allowed inside collections: map<text, map<text, int>>

代码

@Table
@Data
public class AssessmentSubmissionEntity {

    @PrimaryKey()
    private UUID id;

    @Column
    private Map<String, Map<String,Integer>> assessmentMap;


}

男人

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.datastax.cassandra</groupId>
            <artifactId>cassandra-driver-mapping</artifactId>
        </dependency>

【问题讨论】:

    标签: spring-boot cassandra


    【解决方案1】:

    请查看Non frozen collections and user defined types on Cassandra 2.1.8

    您需要添加冻结关键字:

    @Column
    private Map<String, frozen Map<String,Integer>> assessmentMap;
    

    【讨论】:

    • 我知道这一点,但我如何用 spring 做到这一点
    【解决方案2】:

    当您在数据库中有冻结集合时,您还需要将整列标记为@Frozen,或者对于地图,您可以使用@FrozenKey@FrozenValue 将键或值标记为冻结仅冻结地图的特定部分。这是冻结整个列的示例。

    @Table
    @Data
    public class AssessmentSubmissionEntity {
    
        @PrimaryKey()
        private UUID id;
    
        @Frozen
        @Column
        private Map<String, Map<String,Integer>> assessmentMap;    
    }
    

    如果你只想冻结Map里面的数据,那么你需要写成:

        @FrozenValue
        @Column
        private Map<String, Map<String,Integer>> assessmentMap;    
    

    更多信息和示例位于documentation

    【讨论】:

    • 我仍然遇到这个异常。 JPA 似乎无法识别冻结值的一些方式。它仍然发送 cal 查询而不冻结。知道为什么会发生这种情况吗?
    • 您只提到了 Spring Boot,所以我确实认为您使用了 DataStax 驱动程序中的 Object Mapper,并为您提供了指向其文档的链接。如果您使用的是 Spring Data for Cassandra,那么在实现 jira.spring.io/browse/DATACASS-465 之前,您无法使其工作......
    猜你喜欢
    • 2019-04-17
    • 2016-09-19
    • 2019-03-09
    • 2018-04-11
    • 1970-01-01
    • 2021-02-08
    • 2021-01-27
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多