java - 如何在 Cassandra 中存储对象数组

标签 java cassandra arrayofstring

在 cassandra DB 中,我计划存储一个对象数组。最好的方法是什么。对象映射到数据映射与 java 中的模型类。

Class Test{
   @Column(name = "id")
   int id,
   @Column(name = "name")
   String name,
   Address[] address

 class Address{
   String add1,
   String city,
   String state 
  }
}

我是否应该通过将列添加到与 add1、city、state 相同的键空间来将所有(id、name、add1、city、state)放在一个表中?或为地址添加新表 或者 任何其他选项..

我尝试添加 TYPE 但抛出错误为:“来自服务器的错误:code=2200 [无效查询] 消息="用户类型不能包含非卡住的 UDT" 从错误和类型语法来看,我使用了关键字“frozen”,但不是运气。更改表也会出现类似的错误,例如:“mismatched input 'frozen' expecting EOF

此外, 如果我必须保存类型为 'String[ ]' 的列怎么办,因为它不是像 Address[] 这样的自定义类型。它是字符串还是文本。?我们只需要添加 alter 语句吗?如果是这样,它看起来如何

最佳答案

对于您的情况,首先,您需要在 Cassandra 中创建一个 UDT(用户定义类型)。

Create TYPE address(
   add1 text,
   city text,
   state text
);

然后创建一个包含此 UDT 的表。

Create table Test(
   id int,
   name text,
   address list<frozen<address>>,
   primary key(id)
);

如果您想了解更多有关 UTD 及其用法的信息,请访问以下链接:

编辑:

Also, What if I have to save column of type 'String[ ]' As it is not custom type like Address[]. it is of String or text.? Do we need to just add alter statement? if so how it looks like

回答:Alter table test add stringarr list<text>检查此链接以了解有关 cassandra 数据类型的更多信息:CQL data types

关于java - 如何在 Cassandra 中存储对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49327502/

相关文章:

java - Java 中的 RxTx Serial Com,平台无关

java - WebSocket:永远不会调用 OnClose()

Java md5,PHP 方式

cassandra - 如何仅在属性未更改时有条件地将数据保存在 cassandra 中

c - 将字符串存储在另一个字符串的指针数组中

java - 在 Windows 上使用 maven 和 spring-boot 构建 Docker 镜像

queue - 是否可以使用 cassandra 表作为基本队列

indexing - cassandra中分区摘要的内部结构

java - 计算字符串数组中每个单词最后一次出现后的单词数

c - 双指针的动态内存分配将大小作为一个,但可以容纳一个超过一个字节的字符串。这怎么可能?