【问题标题】:Non-frozen collections are not allowed inside collections: set<schema.myTable>集合内不允许非冻结集合:set<schema.myTable>
【发布时间】:2020-11-25 03:28:05
【问题描述】:

我无法弄清楚如何解决此编译错误。目前无法使用 Frozen/FrozenValue 注释。我需要找到一种方法来将 Pojoclass 中的 UDT 类声明为要使用的有效标记。仅供参考..“myTable”表在 cassandra 架构中被声明为 Frozen。

POJO 类

import lombok.Data;
import org.springframework.cassandra.core.PrimaryKeyType;
import org.springframework.data.cassandra.mapping.*;
import java.util.Date;
import java.util.Set;

@Data
@Table(value = "MainTable")
public class Data{

@Column(value = "myTable")
public Set<UDTClass> myTableDTO;
}

UDT 类

@Data
@UserDefinedType("myTable")
public class UDTClass{

public String someData;

我正在使用 springframework 包进行 Cassandra 映射。

【问题讨论】:

    标签: java hibernate cassandra


    【解决方案1】:

    我不知道它在Spring中是如何工作的,但我认为应该是这样的:

    1. 在 Cassandra 的 MappingManager 中添加编解码器:
        manager.udtCodec(UDTClass.class);
    
    1. 在 cql 中创建类型:
        CREATE TYPE IF NOT EXISTS myTable (someData text);
    
    1. 在表中的集合中将类型标记为冻结:
        CREATE TABLE IF NOT EXISTS MainTable (innerTable set<frozen\<myTable\>>);
    

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 2016-05-10
      • 2018-10-01
      • 1970-01-01
      • 2016-06-09
      • 2014-11-27
      • 2015-11-04
      • 2016-11-26
      相关资源
      最近更新 更多