Cassandra Springboot Frozen column исключение - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение Springboot, которое я подключил с помощью cassandra. Я пытаюсь создать карту внутри карты, но получаю следующее исключение.

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>

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Если у вас есть замороженные коллекции в базе данных, вам также нужно пометить весь столбец как @Frozen, или для карт вы можете пометить ключ или значение как замороженные с помощью @FrozenKey и @FrozenValue, если вы хотите заморозить только определенную часть карты. Вот пример, чтобы заморозить весь столбец.

@Table
@Data
public class AssessmentSubmissionEntity {

    @PrimaryKey()
    private UUID id;

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

Если вы хотите заморозить только данные внутри карты, вам нужно записать их как:

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

Больше информации и примеров в документации .

0 голосов
/ 08 ноября 2018

Пожалуйста, ознакомьтесь с Незамороженные коллекции и пользовательские типы на Cassandra 2.1.8 .

Вам необходимо добавить замороженное ключевое слово:

@Column
private Map<String, frozen Map<String,Integer>> assessmentMap;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...