在cassandra中使用list <text>创建用户类型

时间:2018-08-28 07:49:17

标签: cassandra cql

我有一个表可以在cassandra中用自定义类型创建。 从java项目中,我有此类:

public class Product {

    @Column(value = "tags")
    private List<String> tags;

    @Column(value = "price")
    private double price;
}

我想在cassandra中使用此类创建用户类型:

CREATE TYPE quangkeyspace.student (
  tags list<text>,
  price floats
);

但是执行时有错误:InvalidRequest: Error from server: code=2200 [Invalid query] message="A user type cannot contain non-frozen UDTs"

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据您的Cassandra版本,可能需要将UDT定义为frozen。实际上,这意味着该字段是不可变的,而cassandra将该字段视为blob,从而阻止了类型内部不同字段的修改。

此外,请记住,分区键必须始终冻结,这是由于如何从键值中散列令牌。

This可能正在做您想要的事情。