Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 无法识别Springboot cassandra冻结值_Spring Boot_Cassandra - Fatal编程技术网

Spring boot 无法识别Springboot cassandra冻结值

Spring boot 无法识别Springboot cassandra冻结值,spring-boot,cassandra,Spring Boot,Cassandra,我有一个springboot应用程序,我和cassandra连接在一起。我试图在一个映射内创建一个映射,但得到以下异常。在我看来,即使我使用了@FrozenValue,它仍在发送cal,但没有关键字冻结 错误 原因:org.springframework.data.cassandra.CassandraInvalidQueryException:查询;CQL[如果不存在,则创建表assessmentsubmissionentity(studentid文本、assessmentid文本、值映射、主

我有一个springboot应用程序,我和cassandra连接在一起。我试图在一个映射内创建一个映射,但得到以下异常。在我看来,即使我使用了
@FrozenValue
,它仍在发送cal,但没有关键字
冻结

错误

原因:org.springframework.data.cassandra.CassandraInvalidQueryException:查询;CQL[如果不存在,则创建表assessmentsubmissionentity(studentid文本、assessmentid文本、值映射、主键((studentid、assessmentid));];集合内部不允许使用非冻结集合:映射;嵌套异常为com.datastax.driver.core.exceptions.InvalidQueryException:集合中不允许存在非冻结集合:映射
在org.springframework.data.cassandra.core.cql.CassandraExceptionTranslator.translate(CassandraExceptionTranslator.java:139)~[spring-data-cassandra-2.1.2.RELEASE.jar:2.1.2.RELEASE]
在org.springframework.data.cassandra.core.cql.CassandraAccessor.translate(CassandraAccessor.java:334)~[spring-data-cassandra-2.1.2.RELEASE.jar:2.1.2.RELEASE]
原因:com.datastax.driver.core.exceptions.InvalidQueryException:集合:映射内不允许非冻结集合
在com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49)~[cassandra-driver-core-3.6.0.jar:na]
代码

@表格
@吸气剂
@塞特
@诺尔格构装师
@AllArgsConstructor
公共类AssessmentSubmissionEntity实现可序列化{
@PrimaryKeyColumn(类型=PrimaryKeyType.PARTITIONED)
私人字符串学生ID;
@PrimaryKeyColumn(类型=PrimaryKeyType.PARTITIONED)
私有字符串assessmentId;
@冻结值
@纵队
私有地图值;
@凌驾
公共布尔等于(对象o){
如果(this==o)返回true;
如果(o==null | | getClass()!=o.getClass())返回false;
AssessmentSubmissionEntity,该实体=(AssessmentSubmissionEntity)o;
返回Objects.equals(studentId,that.studentId)&&
Objects.equals(assessmentId,that.assessmentId)&&
对象.equals(值,即.values);
}
@凌驾
公共int hashCode(){
返回Objects.hash(studentId、assessmentId、value);
}
}
马文


org.springframework.boot
弹簧启动启动器数据卡桑德拉
com.datasax.cassandra
卡桑德拉驱动核心
com.datasax.cassandra
卡桑德拉驱动核心
com.datasax.cassandra
卡桑德拉驱动映射

Cassandra的Spring数据存在问题-它们没有冻结集合的映射。从他们的JIRA中可以看出——它是在一年多前提交的,但在这方面没有进展

我认为唯一的解决方案是使用DataStax的Java驱动程序中的对象映射器,或者通过CQL管理您的表

Caused by: org.springframework.data.cassandra.CassandraInvalidQueryException: Query; CQL [CREATE TABLE IF NOT EXISTS assessmentsubmissionentity (studentid text, assessmentid text, values map<text, map<text, text>>, PRIMARY KEY ((studentid, assessmentid)));]; Non-frozen collections are not allowed inside collections: map<text, map<text, text>>; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: Non-frozen collections are not allowed inside collections: map<text, map<text, text>>
    at org.springframework.data.cassandra.core.cql.CassandraExceptionTranslator.translate(CassandraExceptionTranslator.java:139) ~[spring-data-cassandra-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.data.cassandra.core.cql.CassandraAccessor.translate(CassandraAccessor.java:334) ~[spring-data-cassandra-2.1.2.RELEASE.jar:2.1.2.RELEASE]
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Non-frozen collections are not allowed inside collections: map<text, map<text, text>>
    at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:49) ~[cassandra-driver-core-3.6.0.jar:na]
@Table
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class AssessmentSubmissionEntity implements Serializable {

    @PrimaryKeyColumn(type = PrimaryKeyType.PARTITIONED)
    private String studentId;

    @PrimaryKeyColumn(type = PrimaryKeyType.PARTITIONED)
    private String assessmentId;

    @FrozenValue
    @Column
    private Map <String, Map<String, String>> values;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        AssessmentSubmissionEntity that = (AssessmentSubmissionEntity) o;
        return Objects.equals(studentId, that.studentId) &&
                Objects.equals(assessmentId, that.assessmentId) &&
                Objects.equals(values, that.values);
    }

    @Override
    public int hashCode() {

        return Objects.hash(studentId, assessmentId, values);
    }
}
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.datastax.cassandra</groupId>
                    <artifactId>cassandra-driver-core</artifactId>
                </exclusion>
            </exclusions>
        </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>