集合内不允许非冻结的集合:set <schema.mytable>

时间:2018-06-25 16:49:53

标签: java hibernate cassandra

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

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映射。

1 个答案:

答案 0 :(得分:0)

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

  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\>>);